{"id":6271,"date":"2026-01-16T18:56:23","date_gmt":"2026-01-16T09:56:23","guid":{"rendered":"https:\/\/secondlife.lol\/?p=6271"},"modified":"2026-01-16T19:00:40","modified_gmt":"2026-01-16T10:00:40","slug":"macos%ec%97%90%ec%84%9c-ollamasqlite-%ea%b8%b0%eb%b0%98-%eb%a1%9c%ec%bb%ac-rag-%ea%b5%ac%ec%b6%95-%eb%b0%a9%eb%b2%95","status":"publish","type":"post","link":"https:\/\/secondlife.lol\/ja\/macos%ec%97%90%ec%84%9c-ollamasqlite-%ea%b8%b0%eb%b0%98-%eb%a1%9c%ec%bb%ac-rag-%ea%b5%ac%ec%b6%95-%eb%b0%a9%eb%b2%95\/","title":{"rendered":"macOS\uc5d0\uc11c Ollama+SQLite \uae30\ubc18 \ub85c\uceec RAG \uad6c\ucd95 \ubc29\ubc95"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"600\" height=\"377\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-53-600x377.png\" alt=\"\ub85c\uceec RAG \uad6c\ucd95 \ubc29\ubc95\" class=\"wp-image-6272\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-53-600x377.png 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-53-300x188.png 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-53-768x482.png 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-53-18x12.png 18w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-53.png 822w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">\uc624\ub298\ub0a0 \ucc57\ubd07\uacfc AI \ub3c4\uad6c\uc5d0\uc11c \uc815\ubcf4\ub97c \uc815\ud655\ud558\uace0 \uc2e0\ub8b0\uc131 \uc788\uac8c \uc5bb\ub294 \ubc29\ubc95\uc73c\ub85c&nbsp;<a href=\"https:\/\/ailib.secondlife.lol\/rag-ai-augmented-generation\/\">RAG<\/a> \uad6c\ucd95\uc744 \ud1b5\ud574 \ud558\uae30\ub3c4 \ud558\ub294\ub370\uc694. <strong>\uac80\uc0c9 \ud655\uc7a5 \uc0dd\uc131(Retrieval-Augmented Generation, RAG)<\/strong>\ub294 \ub300\ud615 \uc5b8\uc5b4 \ubaa8\ub378(LLM)\uc774 \uae30\uc874 \ud6c8\ub828 \ub370\uc774\ud130\uc5d0 \uc5c6\ub294 \ucd5c\uc2e0 \uc815\ubcf4\ub098 \ub3c4\uba54\uc778 \uc9c0\uc2dd\uc744 \ucc38\uc870\ud558\ub3c4\ub85d \ub3c4\uc640 \ub2f5\ubcc0\uc758&nbsp;<strong>\uc815\ud655\ub3c4\uc640 \uc2e0\ub8b0\uc131<\/strong>\uc744 \ub192\uc5ec\uc90d\ub2c8\ub2e4. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788, \ub85c\uceec \ud658\uacbd\uc5d0\uc11c RAG\ub97c \uad6c\ucd95\ud558\uba74&nbsp;<strong>\ud504\ub77c\uc774\ubc84\uc2dc \ubcf4\ud638<\/strong>\uc640&nbsp;<strong>\uc624\ud504\ub77c\uc778 \ud65c\uc6a9<\/strong>\uc774 \uac00\ub2a5\ud574\uc838, AI \ub3c4\uad6c \uac1c\ubc1c\uc790\ub4e4\uc5d0\uac8c \ud070 \uad00\uc2ec\uc744 \ubc1b\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uae00\uc5d0\uc11c\ub294 macOS \uae30\ubc18\uc5d0\uc11c <a href=\"https:\/\/sqlite.org\" target=\"_blank\" rel=\"noopener\">SQLite<\/a>(FTS5\/BM25)\uc640 <a href=\"https:\/\/secondlife.lol\/open-webui-ollama-setup-macbook-part2\/\" data-type=\"post\" data-id=\"5141\">Ollama<\/a>\ub97c \uc0ac\uc6a9\ud574 \ub85c\uceec RAG\ub97c \ub2e8\uacc4\ubcc4\ub85c \uad6c\ud604\ud558\ub294 \uc2e4\uc6a9\uc801\uc778 \ubc29\ubc95\uc744 \ub2e4\ub8f9\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{padding-top:var(--global-kb-spacing-sm, 1.5rem);padding-right:var(--global-kb-spacing-sm, 1.5rem);padding-bottom:var(--global-kb-spacing-sm, 1.5rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title-wrap{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title-wrap{color:var(--global-palette2, #2B6CB0);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{color:var(--global-palette2, #2B6CB0);font-size:28px;font-weight:regular;font-style:normal;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap .kb-table-of-content-list{color:var(--global-palette1, #3182CE);line-height:2em;font-weight:regular;font-style:normal;margin-top:var(--global-kb-spacing-sm, 1.5rem);margin-right:0px;margin-bottom:0px;margin-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap .kb-table-of-content-list .kb-table-of-contents__entry:hover{color:var(--global-palette6, #718096);}@media all and (max-width: 1024px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);}}@media all and (max-width: 1024px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{font-size:28px;}}@media all and (max-width: 767px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{font-size:28px;}}<\/style>\n\n\n<h2 class=\"wp-block-heading\">RAG\ub780 \ubb34\uc5c7\uc778\uac00, \ub85c\uceec RAG\uc758 \ud2b9\uc9d5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>RAG<\/strong>\ub294 \uc0ac\uc6a9\uc790\uc758 \uc9c8\uc758\uc5d0 \ub300\ud574 LLM\uc774 \ub2f5\uc744 \uc0dd\uc131\ud558\uae30 \uc804\uc5d0 \uad00\ub828 \ubb38\uc11c\ub098 \uc790\ub8cc\ub97c \uac80\uc0c9\ud574 \ucc38\uace0 \uc790\ub8cc\ub85c \ud65c\uc6a9\ud558\ub294 \uae30\ubc95\uc785\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \ubc95\uc815 \ud310\uc0ac\uac00 \uc0ac\uac74 \ud310\uacb0\uc5d0 \uc55e\uc11c \uad00\ub828 \ud310\ub840\ub97c \ucc3e\uc544\ubcf4\ub4ef, LLM\uc5d0\uac8c \ud544\uc694\ud55c \ucd5c\uc2e0 \uc815\ubcf4\ub098 \uc804\ubb38 \uc790\ub8cc\ub97c \uc81c\uacf5\ud558\ub294 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/blogs.nvidia.com\/blog\/what-is-retrieval-augmented-generation\/\" target=\"_blank\" rel=\"noopener\">NVIDIA \ube14\ub85c\uadf8<\/a>\uc5d0 \ub530\ub974\uba74, RAG\ub294 \u201c<span style=\"text-decoration: underline;\">\ud2b9\uc815\ud558\uace0 \uad00\ub828\uc131 \ub192\uc740 \ub370\uc774\ud130 \uc18c\uc2a4\uc5d0\uc11c \uc815\ubcf4\ub97c \uac00\uc838\uc640 \uc0dd\uc131 AI \ubaa8\ub378\uc758 \uc815\ud655\ub3c4\uc640 \uc2e0\ub8b0\uc131\uc744 \ud5a5\uc0c1\u201d\uc2dc\ud0a4\ub294 \uae30\ubc95<\/span>\uc785\ub2c8\ub2e4. RAG\uc740 \ubaa8\ub378\uc774 \uc778\uc218\ub85c \ud559\uc2b5\ub41c \uc77c\ubc18\uc801\uc778 \uc5b8\uc5b4 \ud328\ud134 \uc678\uc5d0&nbsp;<strong>\ucd5c\uc2e0 \uc815\ubcf4<\/strong>\ub098&nbsp;<strong>\ub3c4\uba54\uc778\ubcc4 \uc9c0\uc2dd<\/strong>\uc744 \ubc18\uc601\ud560 \uc218 \uc788\uc5b4, \uc798\ubabb\ub41c \ub2f5\ubcc0(\ud658\uac01)\uc744 \uc904\uc774\uace0 \uc0ac\uc6a9\uc790\uc758 \uc2e0\ub8b0\ub97c \ub192\uc774\ub294 \uc7a5\uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub85c\uceec RAG\ub294 \uc774 \uacfc\uc815\uc744&nbsp;<strong>\ud074\ub77c\uc6b0\ub4dc \uc11c\ube44\uc2a4 \ub300\uc2e0 \ub85c\uceec \ud658\uacbd<\/strong>\uc5d0\uc11c \uc218\ud589\ud55c\ub2e4\ub294 \uc810\uc774 \ud2b9\uc9d5\uc785\ub2c8\ub2e4. \uc989, \uc628\ub77c\uc778 API(\uc608: OpenAI, Azure)\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uace0\ub3c4 \ub9e5\ubd81 \ub4f1 \uac1c\uc778 \uae30\uae30\uc5d0\uc11c \ubaa8\ub4e0 \ub370\uc774\ud130\ub97c \ucc98\ub9ac\ud569\ub2c8\ub2e4. \uc7a5\uc810\uc740&nbsp;<strong>\ub370\uc774\ud130 \uc720\ucd9c \uc704\ud5d8 \uac10\uc18c<\/strong>\uc640&nbsp;<strong>API \uc0ac\uc6a9 \ube44\uc6a9 \uc808\uac10<\/strong>,&nbsp;<strong>\uc778\ud130\ub137 \uc5f0\uacb0 \ubd88\ud544\uc694<\/strong>&nbsp;\ub4f1\uc785\ub2c8\ub2e4. \ubc18\uba74 \ub2e8\uc810\uc73c\ub85c\ub294&nbsp;<strong>\ubaa8\ub378 \uc131\ub2a5<\/strong>(\uc608: GPT-4\ubcf4\ub2e4 \uc0c1\ub300\uc801\uc73c\ub85c \ub0ae\uc740 \ud488\uc9c8)\uc774\ub098&nbsp;<strong>\ucef4\ud4e8\ud305 \uc790\uc6d0<\/strong>(CPU\/GPU \uc694\uad6c\ub7c9)\uc774 \uc788\uc2b5\ub2c8\ub2e4. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c, Hosted LLM\uc740 \ubb34\uc81c\ud55c \ud655\uc7a5\uc131\uacfc \uac15\ub825\ud55c \uc131\ub2a5\uc744 \uc81c\uacf5\ud558\ub294 \ubc18\uba74 API \ube44\uc6a9\uacfc \ub124\ud2b8\uc6cc\ud06c \ub808\uc774\ud134\uc2dc, \uac1c\uc778\uc815\ubcf4 \uc774\uc288\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubc18\uba74 \ub85c\uceec LLM\uc740 \ub370\uc774\ud130 \uad00\ub9ac \ud1b5\uc81c\uc640 \ub0ae\uc740 \ub808\uc774\ud134\uc2dc \uc7a5\uc810\uc774 \uc788\uc9c0\ub9cc, \uaddc\ubaa8 \ud655\uc7a5\uacfc \ub9ac\uc18c\uc2a4 \uc81c\uc57d\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc0ac\uc6a9\uc790 \ud658\uacbd\uc774\ub098 \ud544\uc694\uc5d0 \ub530\ub77c \uc591\uc790\uc758 \uc120\ud0dd\uacfc \uc808\ucda9\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ub85c\uceec RAG\uc758 \uac04\ub2e8\ud55c \uc791\ub3d9 \ubaa8\ub378<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"600\" height=\"321\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-55-600x321.png\" alt=\"\ub85c\uceec RAG\uc758 \uac04\ub2e8\ud55c \uc791\ub3d9 \ubaa8\ub378\" class=\"wp-image-6274\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-55-600x321.png 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-55-300x160.png 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-55-768x410.png 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-55-18x10.png 18w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-55.png 1200w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">\ub85c\uceec RAG\uc758 \uae30\ubcf8 \uc544\uc774\ub514\uc5b4\ub294 \uac04\ub2e8\ud569\ub2c8\ub2e4.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>(1)<\/strong>&nbsp;\uba3c\uc800 \ubb38\uc11c\ub4e4\uc744 \ub85c\uceec \uc800\uc7a5\uc18c(\uc608: \ub9c8\ud06c\ub2e4\uc6b4 \ud30c\uc77c, PDF \ub4f1)\ub85c \uc900\ube44\ud55c \ub4a4,&nbsp;<br><strong>(2)<\/strong>&nbsp;SQLite FTS5(\uc804\ubb38 \uac80\uc0c9) \ud14c\uc774\ube14\uc744 \ub9cc\ub4e4\uc5b4 \ubb38\uc11c \ud14d\uc2a4\ud2b8\ub97c \uc0c9\uc778\ud569\ub2c8\ub2e4.&nbsp;<br><strong>(3)<\/strong>&nbsp;\uc0ac\uc6a9\uc790\uac00 \uc9c8\ubb38\uc744 \uc785\ub825\ud558\uba74, \uc774 \uc9c8\ubb38\uc744 \ud0a4\uc6cc\ub4dc\ub85c SQLite FTS5\uc5d0\uc11c \uad00\ub828 \uad6c\ubb38(\ub2e8\ub77d)\uc744 BM25 \uc54c\uace0\ub9ac\uc998\uc73c\ub85c&nbsp;<strong>\ub7ad\ud0b9\ud558\uc5ec<\/strong>&nbsp;\uac80\uc0c9\ud569\ub2c8\ub2e4.&nbsp;<br><strong>(4)<\/strong>&nbsp;\uac80\uc0c9\ub41c \uc0c1\uc704 \uad6c\ubb38\ub4e4\uc744 \ubaa8\uc544\uc11c \uc6d0\ubb38\uc758 \ud504\ub86c\ud504\ud2b8 \uc55e\uc774\ub098 \ub4a4\uc5d0 \ucd94\uac00\ud558\uace0, \uc774 \ud655\uc7a5\ub41c \ud504\ub86c\ud504\ud2b8\ub97c Ollama\uc758 \ub85c\uceec LLM\uc5d0 \uc804\ub2ec\ud574 \ub2f5\ubcc0\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \u201c\uac00\uc7a5 \ucd5c\uadfc\uc5d0 \ub098\uc628 \uc778\ub514\uc544\ub098 \uc874\uc2a4 \uc601\ud654\ub294?\u201d\uc774\ub77c\ub294 \uc9c8\ubb38\uc744 \ubc1b\uc73c\uba74, \ub85c\uceec \uc9c0\uc2dd \ubca0\uc774\uc2a4\uc5d0\uc11c \u201cDial of Destiny (2023)\u201d\uac00 \ud3ec\ud568\ub41c \ubb38\ub2e8\uc744 \ucc3e\uc544\ub0b4\uc5b4 \ud504\ub86c\ud504\ud2b8\uc5d0 \uc0bd\uc785\ud569\ub2c8\ub2e4. \uadf8\ub7f0 \ub2e4\uc74c LLM\uc774 \uc774 \ubb38\ub2e8\uc744 \ucc38\uace0\ud558\ub3c4\ub85d \ud558\uc5ec \u201c2023\ub144\uc5d0 \uc778\ub514\uc544\ub098 \uc874\uc2a4\uc640 \uc6b4\uba85\uc758 \ub2e4\uc774\uc5bc\uc774 \uac1c\ubd09\ud588\ub2e4\u201d\ub294 \uc815\ud655\ud55c \ub2f5\ubcc0\uc744 \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ucc98\ub7fc RAG\ub294 <strong>\uac80\uc0c9(R)<\/strong>\uacfc&nbsp;<strong>\uc0dd\uc131(G)<\/strong>&nbsp;\ub450 \ub2e8\uacc4\ub85c \ub098\ub258\uc5b4 \uc791\ub3d9\ud569\ub2c8\ub2e4. \uba3c\uc800 \uc0ac\uc6a9\uc790 \uc9c8\uc758\ub97c \ubc14\ud0d5\uc73c\ub85c \uad00\ub828 \uc815\ubcf4\ub97c \uac80\uc0c9(retrieval)\ud558\uace0, \uc774\uc5b4\uc11c LLM\uc5d0\uac8c \uac80\uc0c9 \uacb0\uacfc\ub97c \ud3ec\ud568\ud55c \ud504\ub86c\ud504\ud2b8\ub97c \uc81c\uc2dc\ud574 \ub2f5\ubcc0\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/sqlite.org\/fts5.html\" target=\"_blank\" rel=\"noopener\">SQLite FTS5<\/a>\ub294 \ud0a4\uc6cc\ub4dc\uc640 \uad6c\ubb38 \uae30\ubc18\uc758 \uac80\uc0c9\uc744 \ube60\ub974\uac8c \uc218\ud589\ud558\ub3c4\ub85d \uc124\uacc4\ub41c \ubaa8\ub4c8\uc785\ub2c8\ub2e4. \uc804\ud1b5\uc801\uc778 \ubca1\ud130 \uac80\uc0c9\uc5d0 \ube44\ud574&nbsp;<strong>\uc815\ud655\ub3c4<\/strong>\uc640&nbsp;<strong>\ub3c4\uba54\uc778 \ud2b9\uc218\uc5b4 \ubcf4\uc874<\/strong>\uc5d0\uc11c \uac15\uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4. FTS5\ub294 \ud2b9\uc815 \uc6a9\uc5b4\ub098 \uc22b\uc790 \uc815\ubcf4\ub97c \uc628\uc804\ud788 \uc720\uc9c0\ud574 \uac80\uc0c9\ud560 \uc218 \uc788\uc73c\uba70, \ubcf5\uc7a1\ud55c \ubb38\uc11c\uc5d0\uc11c\ub3c4 \uc815\ubc00\ud55c \uac80\uc0c9 \uacb0\uacfc\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c\ub85c FTS\ub294 \uae08\uc735 \ubcf4\uace0\uc11c\ub098 \ubc95\ub960 \ubb38\uc11c\ucc98\ub7fc \uc804\ubb38 \uc6a9\uc5b4\uc640 \uc22b\uc790\uac00 \uc911\uc694\ud55c \ubb38\uc11c\uc5d0 \uc720\ub9ac\ud558\uace0, \uc77c\ubc18 \ubca1\ud130 \uac80\uc0c9\ubcf4\ub2e4 \ub192\uc740 \uc815\ubc00\ub3c4\ub97c \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. SQLite3\ub294 \uae30\ubcf8\uc801\uc73c\ub85c FTS5 \ubaa8\ub4c8\uc744 \uc9c0\uc6d0\ud558\ubbc0\ub85c,&nbsp;<strong>\ubcc4\ub3c4 \uc124\uce58 \uc5c6\uc774 \uac04\ub2e8\ud55c SQL \uba85\ub839\uc73c\ub85c \uac00\uc0c1 \ud14c\uc774\ube14\uc744 \uc0dd\uc131<\/strong>\ud558\uc5ec \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, Python\uc5d0\uc11c SQLite3\ub97c \uc0ac\uc6a9\ud558\uba74 \uc544\ub798\ucc98\ub7fc FTS5 \uac00\uc0c1 \ud14c\uc774\ube14\uc744 \uc0dd\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code language:python\"><code>import&nbsp;sqlite3 \nconn = sqlite3.connect('docs.db') \nconn.execute(\"CREATE VIRTUAL TABLE IF NOT EXISTS docs USING fts5(content)\")<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub807\uac8c \uc0dd\uc131\ub41c&nbsp;<code>docs<\/code>&nbsp;\ud14c\uc774\ube14\uc5d0 \ubb38\uc11c \ud14d\uc2a4\ud2b8\ub97c \uc0bd\uc785\ud558\uba74,&nbsp;<code>docs MATCH ?<\/code>&nbsp;\uc9c8\uc758\ub85c BM25 \uc21c\uc704\uc5d0 \ub530\ub978 \uac80\uc0c9\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uac1c\ubc1c \ud658\uacbd \uc124\uc815: Ollama, SQLite, Python<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">macOS\uc5d0\uc11c \ub85c\uceec RAG\ub97c \uad6c\ucd95\ud558\ub824\uba74 \uba87 \uac00\uc9c0 \ud544\uc218 \ub3c4\uad6c\ub97c \uc124\uce58\ud574\uc57c \ud569\ub2c8\ub2e4.\u00a0<a href=\"https:\/\/ollama.com\" target=\"_blank\" rel=\"noopener\">Ollama<\/a>\ub294 \ub9e5, \uc708\ub3c4\uc6b0, \ub9ac\ub205\uc2a4\uc5d0\uc11c \ub85c\uceec LLM\uc744 \uc2e4\ud589\ud560 \uc218 \uc788\ub3c4\ub85d \ud574\uc8fc\ub294 \uc624\ud508\uc18c\uc2a4 \ub3c4\uad6c\uc785\ub2c8\ub2e4. Ollama\ub97c \uc124\uce58\ud558\ub824\uba74 Homebrew\ub97c \uc774\uc6a9\ud558\ub294 \uac83\uc774 \ud3b8\ub9ac\ud569\ub2c8\ub2e4. \ud130\ubbf8\ub110\uc5d0\uc11c \ub2e4\uc74c \uba85\ub839\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>brew install ollama \nbrew services start ollama<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub807\uac8c \ud558\uba74 Ollama\uac00 \uc124\uce58\ub418\uace0 \ubc31\uadf8\ub77c\uc6b4\ub4dc \uc11c\ube44\uc2a4\ub85c \uc2e4\ud589\ub429\ub2c8\ub2e4. \uc2e4\ud589 \ud6c4 \uc6f9 \ube0c\ub77c\uc6b0\uc800\ub85c\u00a0<code>http:\/\/localhost:11434<\/code>\uc5d0 \uc811\uc18d\ud558\uba74 \u201cOllama is running\u201d \ud398\uc774\uc9c0\uac00 \ud45c\uc2dc\ub429\ub2c8\ub2e4. \uc6d0\ud558\ub294 LLM\uc744 \ub2e4\uc6b4\ubc1b\uc544 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294\ub370, \uc608\ub97c \ub4e4\uc5b4 <a href=\"https:\/\/www.llama.com\" target=\"_blank\" rel=\"noopener\">LLaMA<\/a>\ub098 <a href=\"https:\/\/mistral.ai\" target=\"_blank\" rel=\"noopener\">Mistral<\/a> \ub4f1\uc758 \ubaa8\ub378\uc744 Ollama \ub9c8\ucf13\uc5d0\uc11c \ub0b4\ub824\ubc1b\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. (\uc608:\u00a0<code>ollama pull llama2:13b-chat<\/code>\uc640 \uac19\uc774 \ubaa8\ub378 \uc774\ub984\uc744 \uc9c0\uc815)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>SQLite<\/strong>\ub294 macOS\uc5d0 \uae30\ubcf8 \ub0b4\uc7a5\ub418\uc5b4 \uc788\uc9c0\ub9cc, \ucd5c\uc2e0 \ubc84\uc804\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ud558\uac70\ub098 FTS5\uac00 \ud65c\uc131\ud654\ub41c \ubc84\uc804\uc744 \uc4f0\ub824\uba74 Brew\ub85c \ub2e4\uc2dc \uc124\uce58\ud574\ub3c4 \ub429\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c&nbsp;<code>brew install sqlite<\/code>&nbsp;\uba85\ub839\ub9cc\uc73c\ub85c\ub3c4 FTS5\uac00 \ud65c\uc131\ud654\ub41c SQLite\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Python \ud658\uacbd\uc5d0\uc11c\ub294 \ub0b4\uc7a5&nbsp;<code>sqlite3<\/code>&nbsp;\ubaa8\ub4c8\uc744 \uc774\uc6a9\ud558\uac70\ub098, \ud544\uc694\uc2dc&nbsp;<code>pip install sqlite3<\/code>(\ubcc4\ub3c4 \ud328\ud0a4\ub294 \ud544\uc694 \uc5c6\uc74c)\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-image6271_bd68e9-28 .kb-image-has-overlay:after{opacity:0.3;}<\/style>\n<div class=\"wp-block-kadence-image kb-image6271_bd68e9-28\"><figure class=\"aligncenter size-medium_large\"><img decoding=\"async\" width=\"768\" height=\"474\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-57-768x474.png\" alt=\"brew install sqlite\" class=\"kb-img wp-image-6279\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-57-768x474.png 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-57-300x185.png 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-57-600x371.png 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-57-18x12.png 18w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-57.png 1200w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Python<\/strong>\u00a0\ub3c4\uad6c\ub294 \ub370\uc774\ud130 \uc804\ucc98\ub9ac\uc640 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc870\uc791, API \ud638\ucd9c \ub4f1\uc744 \uc704\ud574 \ud544\uc694\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, PDF\ub97c \ud14d\uc2a4\ud2b8\ub85c \ubcc0\ud658\ud558\ub824\uba74\u00a0<code>pip install pypdf<\/code>\u00a0(\ub610\ub294 PyMuPDF, pdfplumber \ub4f1)\ub85c \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc124\uce58\ud558\uace0, Ollama\uc758 HTTP API\ub97c \uc0ac\uc6a9\ud558\ub824\uba74\u00a0<code>pip install requests<\/code>\u00a0\ub610\ub294\u00a0<code>pip install ollama<\/code>(\uacf5\uc2dd Python \ub77c\uc774\ube0c\ub7ec\ub9ac)\ub3c4 \uc124\uce58\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud130\ubbf8\ub110\uc5d0\uc11c <a href=\"https:\/\/secondlife.lol\/python-venv-create-activate\/\" data-type=\"post\" data-id=\"5834\">Python \uac00\uc0c1\ud658\uacbd(venv)<\/a>\uc744 \ub9cc\ub4e4\uc5b4 \ub450\uace0 \ud544\uc694\ud55c \ud328\ud0a4\uc9c0\ub97c \uc124\uce58\ud574\ub450\uba74 \uad00\ub9ac\uac00 \ud3b8\ub9ac\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ub2e8\uacc4\ubcc4 RAG \uad6c\ud604 \uac00\uc774\ub4dc<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"600\" height=\"340\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-58-600x340.png\" alt=\"\ub2e8\uacc4\ubcc4 RAG \uad6c\ud604 \uac00\uc774\ub4dc\" class=\"wp-image-6280\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-58-600x340.png 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-58-300x170.png 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-58-768x435.png 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-58-18x10.png 18w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-58.png 1200w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">\ub85c\uceec RAG \uc2dc\uc2a4\ud15c\uc744 \uc2e4\uc81c\ub85c \uad6c\ud604\ud558\ub294 \ub2e8\uacc4\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\ub370\uc774\ud130 \uc900\ube44<\/strong>\u00a0\u2013 \ub9c8\ud06c\ub2e4\uc6b4\uc774\ub098 \ud14d\uc2a4\ud2b8 \ud30c\uc77c, PDF \ub4f1 \ud544\uc694\ud55c \ubb38\uc11c\ub97c \uc218\uc9d1\ud569\ub2c8\ub2e4. \ub9c8\ud06c\ub2e4\uc6b4\uc740 \uadf8\ub300\ub85c \ud14d\uc2a4\ud2b8\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uace0, PDF\ub294 \ud14d\uc2a4\ud2b8 \ucd94\ucd9c\uc744 \ud574\uc57c \ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4\u00a0<code>pypdf<\/code>\u00a0\ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud558\uba74 \uc544\ub798\uc640 \uac19\uc774 PDF \ud398\uc774\uc9c0\ubcc4\ub85c \ud14d\uc2a4\ud2b8\ub97c \ucd94\ucd9c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<br><code>from\u00a0pypdf\u00a0import\u00a0PdfReader <\/code><br><code>reader = PdfReader(\"document.pdf\") <\/code><br><code>text =\u00a0\"\"\u00a0for\u00a0page\u00a0in\u00a0reader.pages: text += page.extract_text() +\u00a0\"\\n\"<\/code><br>\ucd94\ucd9c\ud55c \ud14d\uc2a4\ud2b8\ub97c \ubb38\ub2e8\ubcc4\ub85c \ub098\ub204\uac70\ub098 \uc801\uc808\ud55c \ud06c\uae30\ub85c \uccad\ud06c(chunk)\ub85c \ubd84\ud560\ud574 \ub450\uba74 \ucd94\ud6c4 \uac80\uc0c9 \ud488\uc9c8\uc744 \ub192\uc774\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub429\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>FTS5 \uc778\ub371\uc2f1<\/strong>\u00a0\u2013 SQLite \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 FTS5 \uac00\uc0c1 \ud14c\uc774\ube14\uc744 \ub9cc\ub4e4\uc5b4 \ud14d\uc2a4\ud2b8\ub97c \uc800\uc7a5\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4\u00a0<code>docs<\/code>\ub77c\ub294 \ud14c\uc774\ube14\uc744 \ub9cc\ub4e4\uc5c8\ub2e4\uba74, \ucd94\ucd9c\ud55c \ud14d\uc2a4\ud2b8(\ub610\ub294 \ubb38\ub2e8 \uccad\ud06c)\ub97c \uc544\ub798\uc640 \uac19\uc774 \uc0bd\uc785\ud569\ub2c8\ub2e4. <br><code>conn = sqlite3.connect('rag.db') <\/code><br><code>conn.execute(\"CREATE VIRTUAL TABLE IF NOT EXISTS docs USING fts5(content)\")\u00a0<\/code><br><code>for\u00a0paragraph\u00a0in\u00a0paragraphs: <\/code><br>    <code>conn.execute(\"INSERT INTO docs (content) VALUES (?)\", (paragraph,)) <\/code><br><code>conn.commit()<\/code><br>\uc774\ub807\uac8c \ud558\uba74\u00a0<code>docs<\/code>\u00a0\ud14c\uc774\ube14\uc774 \uc644\uc131\ub418\uace0, \uac01 \ud589(row)\ub9c8\ub2e4\u00a0<code>content<\/code>\u00a0\uce7c\ub7fc\uc5d0 \ubb38\uc11c \ub0b4\uc6a9\uc774 \ub4e4\uc5b4\uac11\ub2c8\ub2e4. SQLite FTS5\ub294 \uae30\ubcf8\uc801\uc73c\ub85c BM25 \uc54c\uace0\ub9ac\uc998\uc73c\ub85c \uacb0\uacfc\ub97c \uc810\uc218\ud654\ud558\ubbc0\ub85c, \uac80\uc0c9 \uc2dc BM25 \uc21c\uc73c\ub85c \ub7ad\ud0b9\ub429\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>Ollama \uc2e4\ud589<\/strong>\u00a0\u2013 Ollama\ub97c \uc124\uce58\ud55c \ud6c4 \uc6d0\ud558\ub294 LLM \ubaa8\ub378\uc744 \ub85c\uceec\uc5d0 \ub0b4\ub824\ubc1b\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 LLaMA 2 13B \ucc44\ud305 \ubaa8\ub378\uc744 \uc0ac\uc6a9\ud560 \uacbd\uc6b0,<br><code>ollama pull llama2:13b-chat <\/code><br><code>ollama run llama2:13b-chat <\/code><br>\uc774\ub807\uac8c \ud558\uba74 Ollama \ub370\ubaac\uc774 \ud574\ub2f9 \ubaa8\ub378\uc744 \ub85c\ub4dc\ud558\uace0 \ub85c\uceec\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc900\ube44\uac00 \ub429\ub2c8\ub2e4. Python \ucf54\ub4dc\ub97c \ud1b5\ud574 \uc0ac\uc6a9\ud558\ub824\uba74 Ollama\uc758 OpenAI \ud638\ud658 API\ub97c \uc774\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \ub2e4\uc74c\ucc98\ub7fc\u00a0<code>openai<\/code>\u00a0\ud074\ub77c\uc774\uc5b8\ud2b8\ub97c \uc0ac\uc6a9\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \ucc44\ud305 \uc694\uccad\uc744 \ubcf4\ub0bc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br><code>from\u00a0openai\u00a0import\u00a0OpenAI <\/code><br><code>client = OpenAI(base_url='http:\/\/localhost:11434\/v1\/', api_key='ollama') <\/code><br><code>response = client.chat.completions.create( model='llama2:13b-chat', messages=[{'role':\u00a0'user',\u00a0'content':\u00a0'\uc548\ub155\ud558\uc138\uc694?'}] )<\/code><br><code>print(response.choices[0].message.content)<\/code><br>\ub610\ub294\u00a0<code>requests<\/code>\u00a0\ub77c\uc774\ube0c\ub7ec\ub9ac\ub85c HTTP POST\ub97c \uc9c1\uc811 \ud638\ucd9c\ud574\ub3c4 \ub429\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\uac80\uc0c9 \ubc0f \ud504\ub86c\ud504\ud2b8 \uad6c\uc131<\/strong>\u00a0\u2013 \uc0ac\uc6a9\uc790\uc758 \uc9c8\ubb38\uc774 \ub4e4\uc5b4\uc624\uba74 SQLite\uc5d0 \uc9c8\uc758\uc5b4\ub97c \uc804\ub2ec\ud574 \uc0c1\uc704 N\uac1c\uc758 \uad00\ub828 \ubb38\ub2e8\uc744 \uac00\uc838\uc635\ub2c8\ub2e4. <br>\uc608\ub97c \ub4e4\uc5b4<br><code>query =\u00a0\"\uc778\ub514\uc544\ub098 \uc874\uc2a4 \ucd5c\uc2e0 \uc601\ud654\"\u00a0<\/code><br><code>cursor = conn.execute(\u00a0\"SELECT content FROM docs WHERE docs MATCH ? ORDER BY bm25(docs) LIMIT 3\", (query,) ) <\/code><br><code>results = [row[0]\u00a0forrow\u00a0in\u00a0cursor.fetchall()]<\/code><br>\uc774\ub807\uac8c \ud558\uba74 BM25 \uc810\uc218\uac00 \ub192\uc740 \uc0c1\uc704 3\uac1c \ubb38\ub2e8\uc774\u00a0<code>results<\/code>\uc5d0 \ub9ac\uc2a4\ud2b8\ub85c \uc800\uc7a5\ub429\ub2c8\ub2e4. \uadf8\ub2e4\uc74c \uc774 \uacb0\uacfc\ub97c \uc6d0\ub798 \uc9c8\ubb38\uacfc \ud568\uaed8 LLM\uc758 \uc785\ub825 \ud504\ub86c\ud504\ud2b8\ub85c \uc870\ud569\ud569\ub2c8\ub2e4. <br>\uc608\ub97c \ub4e4\uc5b4<br><code>\ubb38\uc11c \ucc38\uace0 \uc790\ub8cc: [\uacb0\uacfc1 \ud14d\uc2a4\ud2b8] [\uacb0\uacfc2 \ud14d\uc2a4\ud2b8] [\uacb0\uacfc3 \ud14d\uc2a4\ud2b8] <\/code><br><code>\uc9c8\ubb38: \uc778\ub514\uc544\ub098 \uc874\uc2a4 \ucd5c\uc2e0 \uc601\ud654\ub294 \ubb34\uc5c7\uc778\uac00\uc694? <\/code><br>\uc774\ub7f0 \uc2dd\uc73c\ub85c \ucee8\ud14d\uc2a4\ud2b8\ub97c \ub367\ubd99\uc5ec\u00a0<code>chat.completions.create<\/code>\uc5d0 \uc804\ub2ec\ud558\uba74, \ubaa8\ub378\uc774 \ud574\ub2f9 \uc815\ubcf4\ub97c \ucc38\uace0\ud558\uc5ec \uc751\ub2f5\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>LLM\uc73c\ub85c \ub2f5\ubcc0 \uc0dd\uc131<\/strong>\u00a0\u2013 \uc644\uc131\ub41c \ud504\ub86c\ud504\ud2b8\ub97c Ollama LLM\uc5d0 \ubcf4\ub0b4\uba74 \ucd5c\uc885 \ub2f5\ubcc0\uc774 \ub098\uc635\ub2c8\ub2e4. \uc608\uc2dc \ucf54\ub4dc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<br><code>prompt =\u00a0\"\ub2e4\uc74c \ub0b4\uc6a9\uc744 \ucc38\uace0\ud558\uc5ec \uc9c8\ubb38\uc5d0 \ub2f5\ud574\uc8fc\uc138\uc694:\\n\"\u00a0+\u00a0\"\\n\".join(results) +\u00a0f\"\\n\\n\uc9c8\ubb38:\u00a0{query}\" <\/code><br><code>payload = {\u00a0\"model\":\u00a0\"llama2:13b-chat\",\u00a0\"messages\": [{\"role\":\u00a0\"user\",\u00a0\"content\": prompt}] } <\/code><br><code>res = requests.post(\"http:\/\/localhost:11434\/v1\/chat\/completions\", json=payload) <\/code><br><code>answer = res.json()['choices'][0]['message']['content']\u00a0<\/code><br><code>print(answer)<\/code><br>\uc5ec\uae30\uc11c\u00a0<code>v1\/chat\/completions<\/code>\u00a0\uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub294 Ollama\uac00 OpenAI API \ud638\ud658 \ubaa8\ub4dc\ub97c \uc9c0\uc6d0\ud558\uba70, \uc751\ub2f5 JSON\uc5d0\uc11c \uc2e4\uc81c \ub2f5\ubcc0 \ud14d\uc2a4\ud2b8\ub97c \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ol>\n\n\n<style>.kb-image6271_1fc914-d8 .kb-image-has-overlay:after{opacity:0.3;}<\/style>\n<div class=\"wp-block-kadence-image kb-image6271_1fc914-d8\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"600\" height=\"333\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-56-600x333.png\" alt=\"rag workflow\" class=\"kb-img wp-image-6275\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-56-600x333.png 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-56-300x167.png 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-56-768x427.png 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-56-18x10.png 18w, https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-56.png 1049w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\uc2e4\uc6a9\uc801\uc778 \ud301<\/h2>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading6271_3f7bce-26, .wp-block-kadence-advancedheading.kt-adv-heading6271_3f7bce-26[data-kb-block=\"kb-adv-heading6271_3f7bce-26\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading6271_3f7bce-26 mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading6271_3f7bce-26[data-kb-block=\"kb-adv-heading6271_3f7bce-26\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading6271_3f7bce-26 img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading6271_3f7bce-26[data-kb-block=\"kb-adv-heading6271_3f7bce-26\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h3 class=\"kt-adv-heading6271_3f7bce-26 wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading6271_3f7bce-26\">\ud14d\uc2a4\ud2b8 \uccad\ud06c \uc804\ub7b5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ubb38\uc11c\ub97c \ub108\ubb34 \uc9e7\uac8c \uc790\ub974\uba74 \uc758\ubbf8 \ub2e8\uc704\uac00 \ubd84\ub9ac\ub420 \uc218 \uc788\uace0, \ub108\ubb34 \uae38\uba74 \uac80\uc0c9\uc5d0\uc11c \ub178\uc774\uc988\uac00 \uc0dd\uae30\uae30 \uc27d\uc2b5\ub2c8\ub2e4. \uc801\uc808\ud788 \ubb38\ub2e8\uc774\ub098 500\u20131000 \ud1a0\ud070 \ub0b4\uc678\ub85c \uccad\ud06c\ub97c \ub098\ub204\uace0, \ud5e4\ub354\ub97c \uc81c\uac70\ud558\ub294 \ub4f1\uc758 \uc804\ucc98\ub9ac\ub85c \uac80\uc0c9 \ud488\uc9c8\uc744 \ub192\uc5ec\ubcf4\uc138\uc694.<\/p>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading6271_b08ed7-0b, .wp-block-kadence-advancedheading.kt-adv-heading6271_b08ed7-0b[data-kb-block=\"kb-adv-heading6271_b08ed7-0b\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading6271_b08ed7-0b mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading6271_b08ed7-0b[data-kb-block=\"kb-adv-heading6271_b08ed7-0b\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading6271_b08ed7-0b img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading6271_b08ed7-0b[data-kb-block=\"kb-adv-heading6271_b08ed7-0b\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h3 class=\"kt-adv-heading6271_b08ed7-0b wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading6271_b08ed7-0b\">\uba54\ubaa8\ub9ac \uc0ac\uc6a9 \uad00\ub9ac<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">SQLite FTS5 \ud14c\uc774\ube14\uc740 \uae30\ubcf8\uc801\uc73c\ub85c \uba54\ubaa8\ub9ac \ub9f5\ud615\ud0dc\ub85c \ub3d9\uc791\ud569\ub2c8\ub2e4. \ubb38\uc11c \uc218\uac00 \ub9ce\uc73c\uba74 \uba54\ubaa8\ub9ac \uc0ac\uc6a9\ub7c9\uc774 \ucee4\uc9c8 \uc218 \uc788\uc73c\ubbc0\ub85c, \ud544\uc694\uc5d0 \ub530\ub77c\u00a0<code>PRAGMA cache_size<\/code>\u00a0\uc870\uc815\uc774\ub098 \ub514\uc2a4\ud06c \uae30\ubc18 DB \uc0ac\uc6a9(\ud30c\uc77c \uacbd\ub85c \uc9c0\uc815) \ubc29\ubc95\uc744 \uace0\ub824\ud558\uc138\uc694. \ub610\ud55c, Ollama\uc5d0\uc11c \ub300\ud615 \ubaa8\ub378(7B \uc774\uc0c1)\uc744 \uc2e4\ud589\ud560 \ub54c\ub294 CPU \ub300\uc2e0 Apple Silicon M1\/M2 \ub4f1\uc758 GPU\/Neural \uc5d4\uc9c4 \ud65c\uc6a9\uc774\ub098 4\/8\ube44\ud2b8 \ud000\ud0c0\uc774\uc81c\uc774\uc158\uc744 \uc774\uc6a9\ud574 \uba54\ubaa8\ub9ac \ubd80\ub2f4\uc744 \uc904\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading6271_2ad454-55, .wp-block-kadence-advancedheading.kt-adv-heading6271_2ad454-55[data-kb-block=\"kb-adv-heading6271_2ad454-55\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading6271_2ad454-55 mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading6271_2ad454-55[data-kb-block=\"kb-adv-heading6271_2ad454-55\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading6271_2ad454-55 img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading6271_2ad454-55[data-kb-block=\"kb-adv-heading6271_2ad454-55\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h3 class=\"kt-adv-heading6271_2ad454-55 wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading6271_2ad454-55\"><strong>\ud0a4\uc6cc\ub4dc \uc120\ud0dd\uacfc \ucffc\ub9ac<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">SQLite FTS5\ub294 \ud2b9\uc218 \uae30\ud638\ub098 \uad6c\ubb38 \uac80\uc0c9 \uae30\ub2a5\uc774 \uc81c\ud55c\uc801\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\ub7ec \ud0a4\uc6cc\ub4dc\uac00 \uc788\uc744 \ub54c\ub294 OR\/NEAR \uad6c\ubb38(\uc608:\u00a0<code>docs MATCH '\ud0a4\uc6cc\ub4dc1 OR \ud0a4\uc6cc\ub4dc2'<\/code>)\uc744 \ud65c\uc6a9\ud558\uac70\ub098, \uc911\uc694 \ub2e8\uc5b4\ub97c \uadf8\ub300\ub85c \ub9e4\uce6d\uc2dc\ucf1c \ubcf4\uc138\uc694. \ud544\uc694\ud558\ub2e4\uba74 OpenAI\ub098 \ub2e4\ub978 LLM\uc5d0 \uc785\ub825\uc5b4\ub97c \ud655\uc7a5(paraphrase)\uc2dc\ucf1c \ud0a4\uc6cc\ub4dc \ucd94\ucd9c \ud6c4 \uc0ac\uc6a9\ud574\ub3c4 \uc88b\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading6271_6c8a8f-31, .wp-block-kadence-advancedheading.kt-adv-heading6271_6c8a8f-31[data-kb-block=\"kb-adv-heading6271_6c8a8f-31\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading6271_6c8a8f-31 mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading6271_6c8a8f-31[data-kb-block=\"kb-adv-heading6271_6c8a8f-31\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading6271_6c8a8f-31 img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading6271_6c8a8f-31[data-kb-block=\"kb-adv-heading6271_6c8a8f-31\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h3 class=\"kt-adv-heading6271_6c8a8f-31 wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading6271_6c8a8f-31\"><strong>\ub9ac\ub7ad\ud0b9 \uc0ac\uc6a9 \uace0\ub824<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8\uc21c BM25 \uac80\uc0c9 \uc678\uc5d0, \ubca1\ud130 \uc784\ubca0\ub529\uc744 \uc774\uc6a9\ud55c \uc7ac\uc815\ub82c(re-ranking)\uc744 \ucd94\uac00\ud558\uba74 \uc815\ud655\ub3c4\ub97c \ub192\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4,\u00a0<code>sqlite-vec<\/code>\u00a0\ud655\uc7a5\uc73c\ub85c \uc0c1\uc704 \uacb0\uacfc\ub97c \uc784\ubca0\ub529 \uc720\uc0ac\ub3c4\ub85c \ud544\ud130\ub9c1\ud558\uac70\ub098, \ub7ad\ud06c \uc810\uc218\ub97c \uac00\uc911\uce58 \ud569\uc73c\ub85c \uacb0\ud569\ud558\uba74 \ub354 \uc815\ubc00\ud55c \uacb0\uacfc\ub97c \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uae30\ubcf8\uc801\uc778 \uad6c\ucd95 \ub2e8\uacc4\uc5d0\uc11c\ub294 \ud544\uc218\ub294 \uc544\ub2c8\uc9c0\ub9cc, \ub354 \ub192\uc740 \uc815\ud655\ub3c4\ub97c \uc6d0\ud560 \ub550 \ub2e8\uacc4\uc801\uc73c\ub85c \ub3c4\uc785\ud574\ubcf4\uc138\uc694.<\/p>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading6271_0d7fab-6e, .wp-block-kadence-advancedheading.kt-adv-heading6271_0d7fab-6e[data-kb-block=\"kb-adv-heading6271_0d7fab-6e\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading6271_0d7fab-6e mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading6271_0d7fab-6e[data-kb-block=\"kb-adv-heading6271_0d7fab-6e\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading6271_0d7fab-6e img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading6271_0d7fab-6e[data-kb-block=\"kb-adv-heading6271_0d7fab-6e\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h3 class=\"kt-adv-heading6271_0d7fab-6e wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading6271_0d7fab-6e\"><strong>Ollama \ud65c\uc6a9\ubc95<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ollama\ub294 LLM \uc2e4\ud589 \uc678\uc5d0\ub3c4 \uc784\ubca0\ub529 \uc0dd\uc131 \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.\u00a0<code>ollama run embeddinggemma \"\ubb38\uc7a5\"<\/code>\u00a0\uba85\ub839\uc5b4\ub85c \uac04\ub2e8\ud788 \ubb38\uc7a5 \uc784\ubca0\ub529\uc744 \uc5bb\uac70\ub098, Python\u00a0<code>ollama.embed()<\/code>\u00a0\ud568\uc218\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub807\uac8c \ucd94\ucd9c\ud55c \uc784\ubca0\ub529\uc740 \ubca1\ud130 \uac80\uc0c9\uc774\ub098 \uc720\uc0ac\ub3c4 \uae30\ubc18 \uc815\ub82c\uc5d0\ub3c4 \ud65c\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading6271_499732-33, .wp-block-kadence-advancedheading.kt-adv-heading6271_499732-33[data-kb-block=\"kb-adv-heading6271_499732-33\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading6271_499732-33 mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading6271_499732-33[data-kb-block=\"kb-adv-heading6271_499732-33\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading6271_499732-33 img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading6271_499732-33[data-kb-block=\"kb-adv-heading6271_499732-33\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h2 class=\"kt-adv-heading6271_499732-33 wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading6271_499732-33\">RAG \ud30c\uc778\ud29c\ub2dd \ucc28\uc774<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">RAG\uc640 \ud30c\uc778\ud29c\ub2dd\uc740 LLM\uc744 \ud2b9\uc815 \uc791\uc5c5\uc5d0 \ucd5c\uc801\ud654\ud558\ub294 \ub300\ud45c\uc801\uc778 \ub450 \uc811\uadfc\ubc95\uc73c\ub85c, \uadfc\ubcf8\uc801\uc778 \uc791\ub3d9 \ubc29\uc2dd\uc5d0\uc11c \ucc28\uc774\uac00 \ud07d\ub2c8\ub2e4. <strong>RAG<\/strong>\ub294 \ubaa8\ub378 \uc790\uccb4\ub97c \uac74\ub4dc\ub9ac\uc9c0 \uc54a\uace0 \uc678\ubd80 \ub370\uc774\ud130\ubca0\uc774\uc2a4(\uc608: SQLite FTS5\ub098 \ubca1\ud130 DB)\uc5d0\uc11c \uc9c8\uc758\uc640 \uad00\ub828\ub41c \ubb38\uc11c\ub97c \uc2e4\uc2dc\uac04 \uac80\uc0c9\ud574 \ud504\ub86c\ud504\ud2b8\uc5d0 \ucee8\ud14d\uc2a4\ud2b8\ub85c \ucd94\uac00\ud558\ub294 \ubc29\uc2dd\uc785\ub2c8\ub2e4. \ub530\ub77c\uc11c \ucd5c\uc2e0 \uc815\ubcf4\ub098 \uc790\uc8fc \uc5c5\ub370\uc774\ud2b8\ub418\ub294 \ub3c4\uba54\uc778 \ub370\uc774\ud130\uc5d0 \uac15\ud558\uba70, \uad6c\ud604 \ube44\uc6a9\uc774 \ub0ae\uace0 \uac80\uc0c9 \ud488\uc9c8\uc5d0 \ub530\ub77c \uc815\ud655\ub3c4\uac00 \uacb0\uc815\ub418\uc9c0\ub9cc \ud658\uac01(hallucination)\uc744 \uc904\uc774\ub294 \ub370 \ud6a8\uacfc\uc801\uc785\ub2c8\ub2e4. \ubc18\uba74 <strong>\ud30c\uc778\ud29c\ub2dd<\/strong>\uc740 \uae30\uc874 LLM\uc758 \uac00\uc911\uce58\ub97c \ucd94\uac00 \ud559\uc2b5 \ub370\uc774\ud130\ub85c \uc7ac\uc870\uc815\ud574 \uc0c8\ub85c\uc6b4 \uc9c0\uc2dd\uc774\ub098 \ud2b9\uc815 \uc2a4\ud0c0\uc77c\u00b7\ud1a4\uc744 \ubaa8\ub378 \ub0b4\ubd80\ub85c \ub0b4\uc7ac\ud654\uc2dc\ud0a4\ub294 \uacfc\uc815\uc73c\ub85c, \uace0\ube44\uc6a9\u00b7\uace0\uc790\uc6d0 \uc18c\ubaa8\uc801\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud30c\uc778\ud29c\ub2dd\uc740 \uc804\ubb38 \ub3c4\uba54\uc778(\uc608: \uc758\ub8cc\u00b7\ubc95\ub960)\uc5d0\uc11c \uc77c\uad00\ub41c \uc751\ub2f5 \uc2a4\ud0c0\uc77c\uc774\ub098 \ubcf5\uc7a1\ud55c \ucd94\ub860 \ud328\ud134\uc744 \uc694\uad6c\ud560 \ub54c \uc801\ud569\ud558\uba70, \ud55c \ubc88 \ud559\uc2b5 \ud6c4 \ube60\ub978 \ucd94\ub860 \uc18d\ub3c4\ub97c \uc81c\uacf5\ud558\uc9c0\ub9cc \ub370\uc774\ud130 \uc5c5\ub370\uc774\ud2b8 \uc2dc \uc7ac\ud559\uc2b5\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. RAG\ub294 \ub85c\uceec RAG\ucc98\ub7fc SQLite BM25 \uac80\uc0c9\uc73c\ub85c \uac04\ub2e8\ud788 \uad6c\ud604 \uac00\ub2a5\ud558\uba70 \uc720\uc9c0\ubcf4\uc218\uac00 \uc26c\uc6cc \uac1c\uc778 \ud504\ub85c\uc81d\ud2b8\ub098 \ud504\ub85c\ud1a0\ud0c0\uc785\uc5d0 \uc774\uc0c1\uc801\uc785\ub2c8\ub2e4. \ucd5c\uc801\uc758 \uacb0\uacfc\ub294 \ud558\uc774\ube0c\ub9ac\ub4dc \uc811\uadfc\uc73c\ub85c, \ud30c\uc778\ud29c\ub2dd\uc73c\ub85c \uae30\ubcf8 \uc131\ub2a5\uc744 \uac15\ud654\ud55c \ub4a4 RAG\ub85c \uc2e4\uc2dc\uac04 \uc815\ubcf4\ub97c \ubcf4\uc644\ud558\ub294 \ubc29\uc2dd\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ucee4\ubba4\ub2c8\ud2f0 \ubc18\uc751 \uc694\uc57d<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc77c\ubc18\uc801\uc778 \uc0ac\uc6a9\uc790 \uc758\uacac<\/strong>\uc744 \uc0b4\ud3b4\ubcf4\uba74, \ub85c\uceec RAG\uc5d0 \ub300\ud55c \ubc18\uc751\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uc7a5\uc810:<\/strong>&nbsp;\ub9ce\uc740 \uac1c\ubc1c\uc790\ub4e4\uc774&nbsp;<strong>\ud504\ub77c\uc774\ubc84\uc2dc<\/strong>\uc640&nbsp;<strong>\uc624\ud504\ub77c\uc778 \ub3d9\uc791<\/strong>\uc744 \ud070 \uac15\uc810\uc73c\ub85c \uaf3d\uc2b5\ub2c8\ub2e4. \ubbfc\uac10\ud55c \ubb38\uc11c\ub098 \uc790\uccb4 \uc790\ub8cc\ub97c \ud074\ub77c\uc6b0\ub4dc\uc5d0 \ubcf4\ub0b4\uc9c0 \uc54a\uace0 \uc790\uc720\ub86d\uac8c \uac80\uc0c9\ud560 \uc218 \uc788\ub2e4\ub294 \uc810\uc5d0\uc11c \ud638\uc751\uc774 \ub192\uc2b5\ub2c8\ub2e4. \ub610\ud55c \ube44\uc6a9 \ubd80\ub2f4 \uc5c6\uc774 \ub85c\uceec\uc5d0\uc11c \uc790\uc720\ub86d\uac8c \ud29c\ub2dd\ud558\uba70 \uc2e4\ud5d8\ud560 \uc218 \uc788\uc5b4, \ube60\ub978 \ud504\ub85c\ud1a0\ud0c0\uc785 \uc81c\uc791\uc5d0 \uc720\ub9ac\ud558\ub2e4\uace0 \ud3c9\uac00\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\ub2e8\uc810:<\/strong>\u00a0\ubc18\uba74, \ud604 \uc2dc\uc810\uc5d0\uc11c \ub85c\uceec LLM\uc740 \ud074\ub77c\uc6b0\ub4dc GPT \ubaa8\ub378\uc5d0 \ube44\ud574\u00a0<strong>\uc5b8\uc5b4 \uc774\ud574\ub825\uc774\ub098 \ub2f5\ubcc0 \ud488\uc9c8<\/strong>\uc774 \ub0ae\uc740 \ud3b8\uc785\ub2c8\ub2e4. \ub530\ub77c\uc11c\u00a0<strong>\uacb0\uacfc\uc758 \uc815\ud655\ub3c4<\/strong>\uc5d0 \uc788\uc5b4 \uac80\uc99d\uacfc \uc0ac\uc6a9\uc790 \uac1c\uc785\uc774 \ud544\uc694\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610, \ud2b9\ud788 \ud070 \ubaa8\ub378(10B \uc774\uc0c1)\uc744 \ub3cc\ub9ac\ub824\uba74 \ucda9\ubd84\ud55c \uc5f0\uc0b0 \uc790\uc6d0(GPU\/\uba54\ubaa8\ub9ac)\uc774 \ud544\uc694\ud558\uba70, \ucd08\uae30 \uc124\uc815\uacfc \ub514\ubc84\uae45\uc5d0 \ub9ce\uc740 \uc2dc\uac04\uc774 \uc18c\uc694\ub41c\ub2e4\ub294 \uc758\uacac\ub3c4 \ub9ce\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>SQLite FTS\uc5d0 \ub300\ud55c \ud3c9:<\/strong>&nbsp;\uac04\ub2e8\ud55c \uad6c\ucd95\uacfc \ube60\ub978 \ud14d\uc2a4\ud2b8 \uac80\uc0c9\uc5d0 \ub300\ud574 \uae0d\uc815\uc801\uc73c\ub85c \ud3c9\uac00\ud569\ub2c8\ub2e4. \ubcf5\uc7a1\ud55c \ub3c4\ud050\uba3c\ud2b8 \uac80\uc0c9\uc5d0\ub294 \ucda9\ubd84\ud558\uc9c0\ub9cc, \ub9e4\uc6b0 \ud070 \ub370\uc774\ud130\uc14b\uc774\ub098 \uc758\ubbf8 \uae30\ubc18 \uac80\uc0c9\uc5d0\ub294 \ud55c\uacc4\uac00 \uc788\ub2e4\ub294 \uc810\uc740 \uac10\uc548\ud574\uc57c \ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>Ollama \ud65c\uc6a9:<\/strong>&nbsp;\uc124\uce58\uc640 \uc2e4\ud589\uc774 \ube44\uad50\uc801 \uac04\ub2e8\ud558\ub2e4\ub294 \uc810\uc774 \uc7a5\uc810\uc73c\ub85c \uaf3d\ud799\ub2c8\ub2e4. \ucee4\ubba4\ub2c8\ud2f0\uc5d0\uc11c\ub294 Ollama\uac00 \uc544\uc9c1 \uac1c\ubc1c \uc911\uc774\ubbc0\ub85c \uc9c0\uc18d\uc801\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ub97c \ud655\uc778\ud574\uc57c \ud55c\ub2e4\ub294 \uc870\uc5b8\uacfc, \uc801\uc808\ud55c \ubaa8\ub378 \uc120\ud0dd(\ud30c\ub77c\ubbf8\ud130 \ud06c\uae30 \ub4f1)\uc774 \uc911\uc694\ud558\ub2e4\ub294 \uc758\uacac\uc774 \ub9ce\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc704\uc640 \uac19\uc740&nbsp;<strong>\ucee4\ubba4\ub2c8\ud2f0 \uc804\ubc18\uc758 \uc758\uacac<\/strong>\uc744 \ucc38\uace0\ud558\uc5ec, \ub85c\uceec RAG\ub97c \ub3c4\uc785\ud560 \ub54c\ub294&nbsp;<strong>\uc131\ub2a5\uacfc \ud3b8\uc758\uc131, \ub9ac\uc18c\uc2a4 \uc81c\uc57d<\/strong>&nbsp;\uc0ac\uc774\uc758 \uade0\ud615\uc744 \uc798 \ub9de\ucd94\ub294 \uac83\uc774 \uc911\uc694\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc8fc\uc758\uc0ac\ud56d \ubc0f \uc704\ud5d8 \uc694\uc18c<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ub85c\uceec RAG \uc2dc\uc2a4\ud15c\uc744 \uad6c\ucd95\ud560 \ub54c\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ub9ac\uc2a4\ud06c\uc640 \uc8fc\uc758\uc0ac\ud56d\uc744 \uace0\ub824\ud574\uc57c \ud569\ub2c8\ub2e4:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ubaa8\ub378 \ud06c\uae30\uc640 \uc804\ub825 \uc18c\ubaa8:<\/strong>&nbsp;LLM\uc740 \ud06c\uae30\uc5d0 \ube44\ub840\ud574 \uc5f0\uc0b0\ub7c9\uacfc \uc804\ub825 \uc18c\ubaa8\uac00 \ud07d\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 LLaMA 13B\ub97c CPU\uc5d0\uc11c \uc2e4\ud589\ud558\uba74 \uc751\ub2f5 \uc18d\ub3c4\uac00 \ub290\ub9b4 \uc218 \uc788\uc73c\uba70, 70B \ubaa8\ub378\uc740 GPU\ub098 \ub9e4\uce58\ub41c \ud558\ub4dc\uc6e8\uc5b4 \uc5c6\uc774 \uc0ac\uc2e4\uc0c1 \uad6c\ub3d9\uc774 \uc5b4\ub835\uc2b5\ub2c8\ub2e4. \ud544\uc694 \uc2dc \ubaa8\ub378 \ud000\ud0c0\uc774\uc988(4\/8bit)\ub098 Distil \ubaa8\ub378\uc744 \uace0\ub824\ud558\uc138\uc694.<\/li>\n\n\n\n<li><strong>\ud30c\uc77c \uad8c\ud55c \ubc0f \uc811\uadfc:<\/strong>&nbsp;SQLite \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud30c\uc77c\uc758 \uc704\uce58\uc640 \uad8c\ud55c \uc124\uc815\uc744 \uc8fc\uc758\ud574\uc57c \ud569\ub2c8\ub2e4. \uc798\ubabb\ub41c \ub514\ub809\ud1a0\ub9ac \uad8c\ud55c \uc124\uc815\uc740 \ubcf4\uc548 \uc774\uc288\ub97c \uc77c\uc73c\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c, PDF\ub098 \ub9c8\ud06c\ub2e4\uc6b4 \uc6d0\ubcf8 \ud30c\uc77c\uc758&nbsp;<strong>\uc800\uc791\uad8c<\/strong>\uc774\ub098&nbsp;<strong>\uac1c\uc778\uc815\ubcf4<\/strong>\ub97c \ub2e4\ub8f0 \ub550 \ud574\ub2f9 \ub0b4\uc6a9\uc744 \uc8fc\uc758 \uae4a\uac8c \ucc98\ub9ac\ud574\uc57c \ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\uc815\ud655\ub3c4 \ud2b8\ub808\uc774\ub4dc\uc624\ud504:<\/strong>&nbsp;\ub85c\uceec LLM\uc740 GPT-4 \ub4f1 \uc0c1\uc6a9 \ubaa8\ub378\ubcf4\ub2e4 \ud559\uc2b5 \ub370\uc774\ud130\uac00 \uc801\uac70\ub098 \uc54c\ud30c\ubcb3 \ud2b9\ud654\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc0dd\uc131\ub41c \ub2f5\ubcc0\uc774 \uaf2d \uc815\ud655\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. RAG\ub85c\ub3c4&nbsp;<strong>\ubaa8\ub378 \uc790\uccb4\uc758 \ud55c\uacc4<\/strong>\ub294 \uadf9\ubcf5\ud558\uae30 \uc5b4\ub824\uc6b0\ubbc0\ub85c, \ud56d\uc0c1 \ucd9c\ub825 \uacb0\uacfc\ub97c \uac80\uc99d\ud558\uace0 \uc2e0\ub8b0\uc131\uc744 \ub192\uc774\ub294 \ub178\ub825\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\ud1a0\ud070\/\ud1a0\ud06c\ub098\uc774\uc800 \ubd88\uc77c\uce58:<\/strong>&nbsp;\ud14d\uc2a4\ud2b8\ub97c \uc77c\uc815 \uae38\uc774\ub85c \ub098\ub20c \ub54c, \ubaa8\ub378\uc758&nbsp;<strong>\ud1a0\ud06c\ub098\uc774\uc800(tokenizer)<\/strong>&nbsp;\ud2b9\uc131\uc744 \uace0\ub824\ud574\uc57c \ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \ud55c\uae00\uc774\ub098 \ud2b9\uc815 \uae30\ud638\uac00 \ubd84\uc808\ub420 \ub54c \uac1c\uc218 \uc81c\ud55c\uc5d0 \uac78\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc790\ub974\ub294 \uc704\uce58\uac00 \ubb38\uc7a5 \uc911\uac04\uc774 \ub418\uc9c0 \uc54a\ub3c4\ub85d \uc870\uc2ec\ud558\uace0,&nbsp;<code>MAX_TOKENS<\/code>&nbsp;\uc81c\ud55c\uc5d0 \uc720\uc758\ud574 \ud504\ub86c\ud504\ud2b8\ub97c \uad6c\uc131\ud558\uc138\uc694.<\/li>\n\n\n\n<li><strong>PDF \ubcc0\ud658\/\uc784\ubca0\ub529 \uc624\ub958:<\/strong>&nbsp;PDF \ud30c\uc77c\uc5d0\uc11c \ud14d\uc2a4\ud2b8\ub97c \ucd94\ucd9c\ud560 \ub54c \uae00\uaf34 \uc784\ubca0\ub529 \uc624\ub958\ub098 OCR \ubb38\uc81c\ub85c \ub0b4\uc6a9 \uc77c\ubd80\uac00 \ub204\ub77d\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud2b9\ud788 \uc774\ubbf8\uc9c0\ub85c \uc2a4\uce94\ub41c PDF\ub294&nbsp;<strong>Tesseract OCR<\/strong>&nbsp;\uac19\uc740 \ucd94\uac00 \ub3c4\uad6c\uac00 \ud544\uc694\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud14d\uc2a4\ud2b8 \ubcc0\ud658 \uacb0\uacfc\ub97c \uc0ac\ub78c\uc774 \uac80\ud1a0\ud558\uc5ec \ub204\ub77d\uc774\ub098 \uae68\uc9c4 \ubd80\ubd84\uc774 \uc5c6\ub294\uc9c0 \ud655\uc778\ud558\uc138\uc694.<\/li>\n\n\n\n<li><strong>\ucd9c\ub825 \uac80\uc99d:<\/strong>&nbsp;LLM\uc774 \uc0dd\uc131\ud55c \ub2f5\ubcc0\uc740 \uadf8 \uc790\uccb4\ub85c \uc644\uc804\ud55c \uc0ac\uc2e4\uc774 \uc544\ub2d0 \uc218 \uc788\uc73c\ubbc0\ub85c, \ubc18\ub4dc\uc2dc \uc81c\uacf5\ud55c \ubb38\uc11c\ub098 \uadfc\uac70\uc640 \uc77c\uce58\ud558\ub294\uc9c0 \uac80\ud1a0\ud574\uc57c \ud569\ub2c8\ub2e4. RAG\ub294 \ubaa8\ub378\uc774 \ucc38\uace0\ud560 \uc790\ub8cc\ub97c \uc81c\uacf5\ud558\ubbc0\ub85c&nbsp;<strong>\ub2f5\ubcc0 \ucd9c\ucc98 \uac80\uc99d<\/strong>\uc774 \uc0c1\ub300\uc801\uc73c\ub85c \uc6a9\uc774\ud558\uc9c0\ub9cc, \ucd5c\uc885 \ud310\ub2e8\uacfc \uac80\uc99d\uc740 \uc0ac\ub78c\uc774 \uc218\ud589\ud574\uc57c \ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc704 \uc704\ud5d8 \uc694\uc18c\ub97c \ubbf8\ub9ac \uace0\ub824\ud558\uace0 \uc870\uc2ec\ud558\uc5ec \ub85c\uceec RAG\ub97c \uc548\uc804\ud558\uac8c \ud65c\uc6a9\ud558\uc138\uc694. \uc608\ub97c \ub4e4\uc5b4 \u201c\ubaa8\ub378\uc774 \ud5c8\uc704 \uc815\ubcf4\ub97c \uc81c\uc2dc\ud560 \uacbd\uc6b0 \uadf8 \uc6d0\ucc9c\uc744 \ucc3e\uc544\ubcf4\uace0, \uc911\uc694\ud55c \uacb0\uc815\uc5d0\ub294 \uc790\uccb4 \uac80\uc99d\uc744 \uac70\uce5c\ub2e4\u201d\ub294 \uc2dd\uc758 \uc6b4\uc601 \ubc29\uce68\uc744 \ub9c8\ub828\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc790\uc8fc \ubb3b\ub294 \uc9c8\ubb38<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q1: RAG \ud30c\uc778\ud29c\ub2dd \ucc28\uc774\uc810\uc740 \ubb34\uc5c7\uc778\uac00\uc694?<\/strong><br><strong>A:<\/strong>\u00a0RAG\ub294 \uc678\ubd80 \ubb38\uc11c\ub97c \ud1b5\ud574 \uc2e4\uc2dc\uac04\uc73c\ub85c \uc815\ubcf4\ub97c \uac80\uc0c9\ud574 \ubaa8\ub378\uc5d0 \uc81c\uacf5\ud558\ub294 \ubc29\uc2dd\uc774\uace0, \ud30c\uc778\ud29c\ub2dd\uc740 \ub3c4\uba54\uc778 \ub370\uc774\ud130\ub97c \uc774\uc6a9\ud574 \ubaa8\ub378\uc758 \uac00\uc911\uce58\ub97c \uc9c1\uc811 \uc7ac\ud6c8\ub828\ud558\ub294 \ubc29\uc2dd\uc785\ub2c8\ub2e4. RAG\ub294 \uc0c8\ub85c\uc6b4 \uc790\ub8cc\ub97c \ubc18\uc601\ud558\uae30 \uc27d\uace0 \uc778\ud504\ub77c \ube44\uc6a9\uc774 \uc801\ub2e4\ub294 \uc7a5\uc810\uc774 \uc788\uc9c0\ub9cc, \uc9c0\uc2dd\uc774 \ubaa8\ub378 \ub0b4\ubd80\uc5d0 \uc601\uad6c\uc801\uc73c\ub85c \ub0b4\uc7ac\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ubc18\uba74 \ud30c\uc778\ud29c\ub2dd\uc740 \ubaa8\ub378 \uc790\uccb4\uc5d0 \uc9c0\uc2dd\uc744 \uc800\uc7a5\ud560 \uc218 \uc788\uc9c0\ub9cc \ud6c8\ub828 \ube44\uc6a9\uc774 \ud06c\uace0 \uc5c5\ub370\uc774\ud2b8 \uc8fc\uae30\uac00 \uae41\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q2: SQLite FTS5 \uae30\ubc18 RAG\uc640 \ubca1\ud130 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc4f0\ub294 RAG\uc758 \ucc28\uc774\ub294?<\/strong><br><strong>A:<\/strong>\u00a0SQLite FTS5\ub294 \ud0a4\uc6cc\ub4dc \uae30\ubc18 \uac80\uc0c9\uc5d0 \ud2b9\ud654\ub41c \ubc18\uba74, \ubca1\ud130 DB(\uc608: <a href=\"https:\/\/faiss.ai\/index.html\" target=\"_blank\" rel=\"noopener\">FAISS<\/a>, <a href=\"https:\/\/milvus.io\/ko\" target=\"_blank\" rel=\"noopener\">Milvus<\/a>)\ub294 \ud14d\uc2a4\ud2b8 \uc784\ubca0\ub529 \uac04\uc758 \uc758\ubbf8\uc801 \uc720\uc0ac\ub3c4 \uac80\uc0c9\uc5d0 \uac15\uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc778 \uc815\ubcf4 \uac80\uc0c9\uc774\ub098 \uc22b\uc790\/\uc804\ubb38 \uc6a9\uc5b4 \uc815\ud655\uc131\uc774 \uc911\uc694\ud558\uba74 FTS5\uac00 \uc720\ub9ac\ud560 \uc218 \uc788\uace0, \uc5b4\ud718\uac00 \uc720\uc5f0\ud558\uace0 \uc758\ubbf8\uc801\uc73c\ub85c \uc5f0\uad00\ub41c \uacb0\uacfc\ub97c \uc6d0\ud558\uba74 \ubca1\ud130 DB\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. SQLite FTS5\ub294 \ubcc4\ub3c4 \uc11c\ubc84 \uc5c6\uc774 \uac04\ub2e8\ud788 \uad6c\ud604\ud560 \uc218 \uc788\uc9c0\ub9cc, \ubca1\ud130 \uac80\uc0c9\uc740 \uc784\ubca0\ub529 \uc0dd\uc131\uacfc \uacc4\uc0b0 \ube44\uc6a9\uc774 \ucd94\uac00\ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q3: \ub9ac\ub7ad\ud0b9(Ranking Re-Ranker)\uc740 \uaf2d \ud544\uc694\ud55c\uac00\uc694?<\/strong><br><strong>A:<\/strong>&nbsp;\ud544\uc218\ub294 \uc544\ub2c8\uc9c0\ub9cc, \uc815\ud655\ub3c4\uac00 \uc911\uc694\ud55c \uacbd\uc6b0 \uc0ac\uc6a9\uc744 \uace0\ub824\ud560 \ub9cc\ud569\ub2c8\ub2e4. \uae30\ubcf8\uc801\uc73c\ub85c SQLite FTS5\uc5d0\uc11c \uc0c1\uc704 \uacb0\uacfc\ub97c \ubf51\uace0, \uc774\ud6c4\uc5d0 \ucd94\uac00 \uc54c\uace0\ub9ac\uc998(\uc608: \ubca1\ud130 \uc784\ubca0\ub529 \uc720\uc0ac\ub3c4, \uc5ed\uc704\uce58 \uc21c\uc704 \uc735\ud569 \ub4f1)\uc73c\ub85c \uc21c\uc704\ub97c \uc7ac\uc870\uc815\ud558\uba74 \ub354 \uc77c\uad00\uc131 \uc788\ub294 \ub2f5\ubcc0\uc744 \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud2b9\ud788 \ubb38\uc11c\uac00 \ub9ce\uac70\ub098 \ub2e4\uc758\uc5b4\uac00 \ub9ce\uc744 \ub54c \ub9ac\ub7ad\ud0b9\uc744 \ud1b5\ud574 \ubd88\ud544\uc694\ud55c \ub2f5\ubcc0\uc744 \uac78\ub7ec\ub0b4\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q4: RAG \uc2dc\uc2a4\ud15c \uad6c\ucd95\uc5d0 \ucd94\ucc9c\ud558\ub294 LLM\uacfc \uc784\ubca0\ub529 \ubaa8\ub378\uc740?<\/strong><br><strong>A:<\/strong>&nbsp;Ollama\uc5d0\uc11c\ub294 LLaMA, Mistral, Qwen, Gemma \ub4f1 \uc5ec\ub7ec \uc624\ud508 \ubaa8\ub378\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c \ucc44\ud305\uacfc \ud14d\uc2a4\ud2b8 \uc0dd\uc131\uc744 \uc704\ud574 LLaMA 2 7B\/13B, Mistral 7B \ub4f1\uc774 \uc788\uace0, \uc784\ubca0\ub529\uc6a9\uc73c\ub85c\ub294&nbsp;<code>gemma<\/code>\ub098&nbsp;<code>all-MiniLM<\/code>&nbsp;\uac19\uc740 \uacbd\ub7c9 \ubaa8\ub378\uc774 \ub9ce\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \ubaa8\ub378 \uc120\ud0dd \uc2dc&nbsp;<strong>\ud30c\ub77c\ubbf8\ud130 \ud06c\uae30<\/strong>(\uc608: 7B\/13B)\uc640&nbsp;<strong>\uc591\uc790\ud654 \uc9c0\uc6d0<\/strong>&nbsp;\uc5ec\ubd80\ub97c \uace0\ub824\ud558\uc138\uc694. \uc608\ub97c \ub4e4\uc5b4 CPU\ub9cc \uc0ac\uc6a9\ud55c\ub2e4\uba74 7B \uc815\ub3c4\ub97c, M1\/M2\ub97c \ud65c\uc6a9\ud558\uba74 13B \uc774\uc0c1\ub3c4 \uac00\ub2a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q5: SQLite \ub300\uc2e0 <a href=\"https:\/\/lucene.apache.org\" target=\"_blank\" rel=\"noopener\">Lucene<\/a>\uc774\ub098 <a href=\"https:\/\/www.elastic.co\/elasticsearch?utm_campaign=G-TXT-APJ-ASEAN-Core-EN-BR&amp;utm_content=Brand-Core&amp;utm_source=google&amp;utm_medium=cpc&amp;device=c&amp;utm_term=elasticsearch&amp;utm_id=701610000005lJVAAY&amp;gad_source=1&amp;gad_campaignid=22975634105&amp;gbraid=0AAAAADrDgoIucuLiro3tl2TiCHc-PO7xd&amp;gclid=CjwKCAiA4KfLBhB0EiwAUY7GATJu84sILc8Uozi8ieSspKBERs2qcBSooZZzh8LnW3me-xfv514brBoC2HgQAvD_BwE\" target=\"_blank\" rel=\"noopener\">Elasticsearch<\/a> \uac19\uc740 \uac80\uc0c9\uc5d4\uc9c4\uc744 \uc368\ub3c4 \ub418\ub098\uc694?<\/strong><br><strong>A:<\/strong>\u00a0\uac00\ub2a5\ud569\ub2c8\ub2e4. Lucene\/Solr, Elasticsearch \ub4f1\uc740 \ub354 \ubcf5\uc7a1\ud55c \ud14d\uc2a4\ud2b8 \ubd84\uc11d\uacfc \ubd84\uc0b0 \uac80\uc0c9 \uae30\ub2a5\uc744 \uc81c\uacf5\ud558\uc9c0\ub9cc, \uad6c\ucd95 \ub09c\uc774\ub3c4\uc640 \ud658\uacbd \uad6c\uc131\uc774 \ucd94\uac00\ub429\ub2c8\ub2e4. \ub2e8\uc77c \uba38\uc2e0\uc5d0\uc11c \uac00\ubccd\uac8c \uc2dc\uc791\ud558\uace0 \uc2f6\ub2e4\uba74 SQLite FTS5\uac00 \ud3b8\ub9ac\ud558\uba70, \ud070 \uaddc\ubaa8\ub098 \uace0\uae09 \uac80\uc0c9 \uae30\ub2a5\uc774 \ud544\uc694\ud558\ub2e4\uba74 Lucene \uacc4\uc5f4 \uac80\uc0c9\uc5d4\uc9c4\uc744 \uace0\ub824\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q6: \ub85c\uceec RAG \uad6c\ucd95 \uc608\uc81c\ub85c\ub294 \uc5b4\ub5a4 \uac83\uc774 \uc788\ub098\uc694?<\/strong><br><strong>A:<\/strong>\u00a0\uc608\ub97c \ub4e4\uc5b4 \ub17c\ubb38 PDF\ub97c \ub85c\uceec\uc5d0 \uc800\uc7a5\ud558\uace0, \uc774\ub4e4\uc744 \ud14d\uc2a4\ud2b8\ub85c \ubcc0\ud658\ud558\uc5ec SQLite\uc5d0 \uc0c9\uc778\ud55c \ub4a4 \uc9c8\uc758\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/turso.tech\/blog\" target=\"_blank\" rel=\"noopener\">Turso \ube14\ub85c\uadf8<\/a>\ub098 \uac1c\ubc1c\uc790 \ucee4\ubba4\ub2c8\ud2f0\uc5d0\ub3c4 \uc720\uc0ac\ud55c \uc0ac\ub840\uac00 \ub9ce\uc774 \uacf5\uc720\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \ud544\uc694\ud55c \uc608\uc81c\uc5d0 \ub9de\ucdb0 \ud30c\uc774\uc36c \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc791\uc131\ud558\uace0, Ollama\ub85c \ubaa8\ub378\uc744 \uc5f0\uacb0\ud558\uba74 \ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc815\ub9ac\ud558\uae30<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uae00\uc5d0\uc11c\ub294&nbsp;<strong>macOS \ud658\uacbd\uc5d0\uc11c Ollama\uc640 SQLite FTS5\ub97c \ud65c\uc6a9\ud574 \ub85c\uceec RAG \uc2dc\uc2a4\ud15c\uc744 \uad6c\ucd95\ud558\ub294 \ubc29\ubc95<\/strong>\uc744 \uc0b4\ud3b4\ubcf4\uc558\uc2b5\ub2c8\ub2e4. \uba3c\uc800 RAG\uc758 \uac1c\ub150\uacfc \ub85c\uceec RAG\uc758 \uc7a5\ub2e8\uc810\uc744 \uc124\uba85\ud588\uace0, \ub9c8\ud06c\ub2e4\uc6b4\/PDF \ud14d\uc2a4\ud2b8 \uc900\ube44\uc640 SQLite \uc778\ub371\uc2f1, Ollama \uc2e4\ud589 \ubc29\ubc95\uc744 \ub2e8\uacc4\ubcc4\ub85c \uc548\ub0b4\ud588\uc2b5\ub2c8\ub2e4. \ud14d\uc2a4\ud2b8\ub97c \uc801\uc808\ud788 \uccad\ud06c\ud654\ud558\uace0 BM25 \uac80\uc0c9\uc744 \ud1b5\ud574 \uc0c1\uc704 \uad00\ub828 \ubb38\ub2e8\uc744 \ubf51\uc544 \ud504\ub86c\ud504\ud2b8\uc5d0 \uc8fc\uc785\ud558\ub294 \uacfc\uc815\uc744 \ucf54\ub529 \uc608\uc2dc\uc640 \ud568\uaed8 \uc124\uba85\ud588\uc2b5\ub2c8\ub2e4. \ub610\ud55c \uc2e4\uc6a9\uc801\uc778 \ud301\uacfc \ucee4\ubba4\ub2c8\ud2f0 \uc758\uacac, \uc704\ud5d8\uc694\uc18c\ub97c \uc815\ub9ac\ud558\uc5ec \uc2e4\uc81c \uad6c\ucd95 \uc2dc \ub3c4\uc6c0\uc774 \ub418\ub3c4\ub85d \ud588\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c \uae00\uc5d0\uc11c\ub294&nbsp;<strong>BM25\uc640 \ubca1\ud130 \uac80\uc0c9\uc744 \uacb0\ud569\ud55c \ud558\uc774\ube0c\ub9ac\ub4dc RAG<\/strong>\ub098&nbsp;<strong>\uacb0\uacfc \uc7ac\uc21c\uc704\ud654(re-ranking)<\/strong>&nbsp;\uac19\uc740 \uace0\uae09 \uae30\uc220\uc744 \ub2e4\ub8f0 \uc608\uc815\uc785\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, SQLite FTS5\uc640 \ud568\uaed8 \uc784\ubca0\ub529 \ubca1\ud130\ub97c \uc0ac\uc6a9\ud558\uc5ec \uac80\uc0c9 \uc815\ud655\ub3c4\ub97c \ub192\uc774\ub294 \ubc29\ubc95 \ub4f1\uc744 \uc2e4\uc2b5\ud560 \uac83\uc785\ub2c8\ub2e4. \uc5ec\ub7ec\ubd84\uc758 \ub85c\uceec RAG \ud504\ub85c\uc81d\ud2b8\uc5d0 \ub3c4\uc6c0\uc774 \ub418\uae38 \ubc14\ub78d\ub2c8\ub2e4!<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RAG \ud559\uc2b5\uc5d0 \ub300\ud55c \uc774\uc288\ub97c \uc774\uc57c\uae30 \ud558\uc2dc\ub294 \ubd84\uc774 \uc788\uc5b4\uc11c \ubcc4\ub3c4\ub85c \uc815\ub9ac\ud574 \ubcf4\uc558\uc2b5\ub2c8\ub2e4.\n\nRAG \uc790\uccb4\ub294 \uc804\ud1b5\uc801\uc778 \"\ud559\uc2b5(training)\" \uacfc\uc815\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. \ub300\uc2e0 \uac80\uc0c9(retrieval) \ub2e8\uacc4\uc5d0\uc11c BM25\ub098 \ubca1\ud130 \uc784\ubca0\ub529\uc744 \ud1b5\ud574 \uad00\ub828 \ubb38\uc11c\ub97c \ucc3e\uace0, \uc774\ub97c \ud504\ub86c\ud504\ud2b8 \ucee8\ud14d\uc2a4\ud2b8\ub85c LLM\uc5d0 \uc804\ub2ec\ud558\ub294 \ubc29\uc2dd\uc774\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \ub2e4\ub9cc \uac80\uc0c9 \ud488\uc9c8\uc744 \ub192\uc774\uae30 \uc704\ud574 \"RAG \ud559\uc2b5\"\uc774\ub77c \ubd88\ub9ac\ub294 \ucd5c\uc801\ud654 \uacfc\uc815\uc774 \uc874\uc7ac\ud558\ub294\ub370, \uc774\ub294 \uccad\ud06c \ubd84\ud560 \uc804\ub7b5(chunking), \uac80\uc0c9 \uc784\uacc4\uac12, \uc0c1\uc704 K\uac1c \ubb38\uc11c \uc218 \ub4f1\uc744 \uc2e4\ud5d8\ud558\uace0 \ud29c\ub2dd\ud558\ub294 \uac83\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4. \ub610\ud55c \ubca1\ud130 RAG\uc5d0\uc11c\ub294 \ubb38\uc11c \uc784\ubca0\ub529 \ubaa8\ub378\uc744 \ub3c4\uba54\uc778 \ub370\uc774\ud130\ub85c \ud30c\uc778\ud29c\ub2dd\ud558\uac70\ub098, \ucffc\ub9ac \ud655\uc7a5(Query Expansion) \uae30\ubc95\uc744 \ud1b5\ud574 \ub354 \uc815\ud655\ud55c \uac80\uc0c9\uc5b4\ub97c \uc790\ub3d9 \uc0dd\uc131\ud558\ub294 \ubc29\ubc95\ub3c4 \ud3ec\ud568\ub429\ub2c8\ub2e4.\n\n\uace0\uae09 RAG \ud559\uc2b5\uc73c\ub85c\ub294 \uac80\uc0c9 \ud6c4 \uc0dd\uc131(Retrieval-Augmented Generation) \ud3c9\uac00 \uc9c0\ud45c\ub97c \ud65c\uc6a9\ud55c \ubc18\ubcf5 \uac1c\uc120\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 RAGAS\ub098 DeepEval \uac19\uc740 \ud504\ub808\uc784\uc6cc\ud06c\ub85c \uac80\uc0c9\ub41c \ucee8\ud14d\uc2a4\ud2b8\uc758 \uad00\ub828\uc131(Context Relevance), \ub2f5\ubcc0\uc758 \uc0ac\uc2e4\uc131(Groundedness), \uc751\ub2f5 \uc644\uc804\uc131\uc744 \uce21\uc815\ud558\uace0, \ub0ae\uc740 \uc810\uc218\uc758 \uacbd\uc6b0 \uccad\ud06c \ud06c\uae30\ub098 \uac80\uc0c9 \uc54c\uace0\ub9ac\uc998\uc744 \uc870\uc815\ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \uac80\uc0c9 \ud488\uc9c8\uc744 \uccb4\uacc4\uc801\uc73c\ub85c \ucd5c\uc801\ud654\ud558\uba74 LLM\uc758 \ud658\uac01\uc744 30-50% \uc904\uc774\uace0, \ub2f5\ubcc0 \uc815\ud655\ub3c4\ub97c \ud06c\uac8c \ud5a5\uc0c1\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub85c\uceec RAG\uc5d0\uc11c\ub294 SQLite FTS5\uc758 `rank` \ud568\uc218 \ud30c\ub77c\ubbf8\ud130\ub098 \ud1a0\ud070 \uc624\ubc84\ub7a9 \uc124\uc815\uc744 \uc2e4\ud5d8\ud558\ub294 \uac83\ubd80\ud130 \uc2dc\uc791\ud558\ub294 \uac83\uc774 \ud6a8\uacfc\uc801\uc785\ub2c8\ub2e4.<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\uc624\ub298\ub0a0 \ucc57\ubd07\uacfc AI \ub3c4\uad6c\uc5d0\uc11c \uc815\ubcf4\ub97c \uc815\ud655\ud558\uace0 \uc2e0\ub8b0\uc131 \uc788\uac8c \uc5bb\ub294 \ubc29\ubc95\uc73c\ub85c&nbsp;RAG&#8230;<\/p>","protected":false},"author":3,"featured_media":6272,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[7],"tags":[267,1433,916,1429,1432,1434,1430,1431,1428],"class_list":["post-6271","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-coding","tag-ai-","tag-bm25","tag-ollama","tag-rag-","tag-sqlite-fts5","tag--rag"],"taxonomy_info":{"category":[{"value":7,"label":"\uc778\uacf5\uc9c0\ub2a5(AI)"}],"post_tag":[{"value":267,"label":"AI \ub3c4\uad6c"},{"value":1433,"label":"BM25"},{"value":916,"label":"Ollama"},{"value":1429,"label":"RAG \uad6c\ucd95"},{"value":1432,"label":"RAG \uad6c\ud604"},{"value":1434,"label":"RAG \ud30c\uc778\ud29c\ub2dd"},{"value":1430,"label":"RAG \ud559\uc2b5"},{"value":1431,"label":"SQLite FTS5"},{"value":1428,"label":"\ub85c\uceec RAG"}]},"featured_image_src_large":["https:\/\/secondlife.lol\/wp-content\/uploads\/2026\/01\/image-53-600x377.png",600,377,true],"author_info":{"display_name":"TERE","author_link":"https:\/\/secondlife.lol\/ja\/author\/tere\/"},"comment_info":0,"category_info":[{"term_id":7,"name":"\uc778\uacf5\uc9c0\ub2a5(AI)","slug":"ai-coding","term_group":0,"term_taxonomy_id":7,"taxonomy":"category","description":"","parent":20,"count":74,"filter":"raw","cat_ID":7,"category_count":74,"category_description":"","cat_name":"\uc778\uacf5\uc9c0\ub2a5(AI)","category_nicename":"ai-coding","category_parent":20}],"tag_info":[{"term_id":267,"name":"AI \ub3c4\uad6c","slug":"ai-%eb%8f%84%ea%b5%ac","term_group":0,"term_taxonomy_id":267,"taxonomy":"post_tag","description":"","parent":0,"count":4,"filter":"raw"},{"term_id":1433,"name":"BM25","slug":"bm25","term_group":0,"term_taxonomy_id":1433,"taxonomy":"post_tag","description":"","parent":0,"count":2,"filter":"raw"},{"term_id":916,"name":"Ollama","slug":"ollama","term_group":0,"term_taxonomy_id":916,"taxonomy":"post_tag","description":"","parent":0,"count":7,"filter":"raw"},{"term_id":1429,"name":"RAG \uad6c\ucd95","slug":"rag-%ea%b5%ac%ec%b6%95","term_group":0,"term_taxonomy_id":1429,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":1432,"name":"RAG \uad6c\ud604","slug":"rag-%ea%b5%ac%ed%98%84","term_group":0,"term_taxonomy_id":1432,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":1434,"name":"RAG \ud30c\uc778\ud29c\ub2dd","slug":"rag-%ed%8c%8c%ec%9d%b8%ed%8a%9c%eb%8b%9d","term_group":0,"term_taxonomy_id":1434,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":1430,"name":"RAG \ud559\uc2b5","slug":"rag-%ed%95%99%ec%8a%b5","term_group":0,"term_taxonomy_id":1430,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":1431,"name":"SQLite FTS5","slug":"sqlite-fts5","term_group":0,"term_taxonomy_id":1431,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":1428,"name":"\ub85c\uceec RAG","slug":"%eb%a1%9c%ec%bb%ac-rag","term_group":0,"term_taxonomy_id":1428,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"}],"_links":{"self":[{"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/posts\/6271","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/comments?post=6271"}],"version-history":[{"count":7,"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/posts\/6271\/revisions"}],"predecessor-version":[{"id":6286,"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/posts\/6271\/revisions\/6286"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/media\/6272"}],"wp:attachment":[{"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/media?parent=6271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/categories?post=6271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/tags?post=6271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}