Buckets:
| <meta charset="utf-8" /><meta name="hf:doc:metadata" content="{"title":"๐ค ๋ฒกํฐ ๊ฒ์ ์์ด์ ํธ: ํ๊น ํ์ด์ค ํ๋ธ๋ฅผ ๋ฐฑ์๋๋ก ํ๋ ์ง๋ฅํ ๊ฒ์ ์์ง","local":"-๋ฒกํฐ-๊ฒ์-์์ด์ ํธ-ํ๊น ํ์ด์ค-ํ๋ธ๋ฅผ-๋ฐฑ์๋๋ก-ํ๋-์ง๋ฅํ-๊ฒ์-์์ง","sections":[{"title":"Agentic ์ ๊ทผ ๋ฐฉ์์ ์ฐจ๋ณ์ ","local":"agentic-์ ๊ทผ-๋ฐฉ์์-์ฐจ๋ณ์ ","sections":[],"depth":3},{"title":"DuckDB?","local":"duckdb","sections":[],"depth":3}],"depth":1}"> | |
| <link href="/docs/cookbook/main/ko/_app/immutable/assets/0.e3b0c442.css" rel="modulepreload"> | |
| <link rel="modulepreload" href="/docs/cookbook/main/ko/_app/immutable/entry/start.4b65b044.js"> | |
| <link rel="modulepreload" href="/docs/cookbook/main/ko/_app/immutable/chunks/scheduler.e0212c12.js"> | |
| <link rel="modulepreload" href="/docs/cookbook/main/ko/_app/immutable/chunks/singletons.a4069010.js"> | |
| <link rel="modulepreload" href="/docs/cookbook/main/ko/_app/immutable/chunks/paths.d649b3de.js"> | |
| <link rel="modulepreload" href="/docs/cookbook/main/ko/_app/immutable/entry/app.b90033ef.js"> | |
| <link rel="modulepreload" href="/docs/cookbook/main/ko/_app/immutable/chunks/preload-helper.1e412078.js"> | |
| <link rel="modulepreload" href="/docs/cookbook/main/ko/_app/immutable/chunks/index.a585a37c.js"> | |
| <link rel="modulepreload" href="/docs/cookbook/main/ko/_app/immutable/nodes/0.64193f5f.js"> | |
| <link rel="modulepreload" href="/docs/cookbook/main/ko/_app/immutable/chunks/each.e59479a4.js"> | |
| <link rel="modulepreload" href="/docs/cookbook/main/ko/_app/immutable/nodes/12.a5159399.js"> | |
| <link rel="modulepreload" href="/docs/cookbook/main/ko/_app/immutable/chunks/MermaidChart.svelte_svelte_type_style_lang.2ba1ebea.js"> | |
| <link rel="modulepreload" href="/docs/cookbook/main/ko/_app/immutable/chunks/DocNotebookDropdown.26e1fda8.js"><!-- HEAD_svelte-u9bgzb_START --><meta name="hf:doc:metadata" content="{"title":"๐ค ๋ฒกํฐ ๊ฒ์ ์์ด์ ํธ: ํ๊น ํ์ด์ค ํ๋ธ๋ฅผ ๋ฐฑ์๋๋ก ํ๋ ์ง๋ฅํ ๊ฒ์ ์์ง","local":"-๋ฒกํฐ-๊ฒ์-์์ด์ ํธ-ํ๊น ํ์ด์ค-ํ๋ธ๋ฅผ-๋ฐฑ์๋๋ก-ํ๋-์ง๋ฅํ-๊ฒ์-์์ง","sections":[{"title":"Agentic ์ ๊ทผ ๋ฐฉ์์ ์ฐจ๋ณ์ ","local":"agentic-์ ๊ทผ-๋ฐฉ์์-์ฐจ๋ณ์ ","sections":[],"depth":3},{"title":"DuckDB?","local":"duckdb","sections":[],"depth":3}],"depth":1}"><!-- HEAD_svelte-u9bgzb_END --> <p></p> <div class="flex space-x-1 absolute z-10 right-0 top-0" style=""> <a href="https://colab.research.google.com/github/huggingface/cookbook/blob/main/notebooks/ko/vector_search_agent.ipynb" target="_blank"><img alt="Open In Colab" class="!m-0" src="https://colab.research.google.com/assets/colab-badge.svg"></a> </div> <div class="items-center shrink-0 min-w-[100px] max-sm:min-w-[50px] justify-end ml-auto flex" style="float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"><div class="inline-flex rounded-md max-sm:rounded-sm"><button class="inline-flex items-center gap-1 h-7 max-sm:h-7 px-2 max-sm:px-1.5 text-sm font-medium text-gray-800 border border-r-0 rounded-l-md max-sm:rounded-l-sm border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-live="polite"><span class="inline-flex items-center justify-center rounded-md p-0.5 max-sm:p-0 hover:text-gray-800 dark:hover:text-gray-200"><svg class="sm:size-3.5 size-3" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg></span> <span>Copy page</span></button> <button class="inline-flex items-center justify-center w-6 max-sm:w-5 h-7 max-sm:h-7 disabled:pointer-events-none text-sm text-gray-500 hover:text-gray-700 dark:hover:text-white rounded-r-md max-sm:rounded-r-sm border border-l transition border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-haspopup="menu" aria-expanded="false" aria-label="Open copy menu"><svg class="transition-transform text-gray-400 overflow-visible sm:size-3.5 size-3 rotate-0" width="1em" height="1em" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L6 6L11 1" stroke="currentColor"></path></svg></button></div> </div> <h1 class="relative group"><a id="-๋ฒกํฐ-๊ฒ์-์์ด์ ํธ-ํ๊น ํ์ด์ค-ํ๋ธ๋ฅผ-๋ฐฑ์๋๋ก-ํ๋-์ง๋ฅํ-๊ฒ์-์์ง" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#-๋ฒกํฐ-๊ฒ์-์์ด์ ํธ-ํ๊น ํ์ด์ค-ํ๋ธ๋ฅผ-๋ฐฑ์๋๋ก-ํ๋-์ง๋ฅํ-๊ฒ์-์์ง"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>๐ค ๋ฒกํฐ ๊ฒ์ ์์ด์ ํธ: ํ๊น ํ์ด์ค ํ๋ธ๋ฅผ ๋ฐฑ์๋๋ก ํ๋ ์ง๋ฅํ ๊ฒ์ ์์ง</span></h1> <p data-svelte-h="svelte-owjfcg"><em>์ฐธ์กฐ: <a href="https://github.com/MartinEls" rel="nofollow">Martin Elstner</a> </em>์์ฑ์: <a href="https://github.com/ahnjj" rel="nofollow">์์ </a></p> <p data-svelte-h="svelte-1c92z2c">๊ฒ์ ์์ง์ ํฌ๊ฒ ํค์๋ ๊ฒ์๊ณผ ๋ฒกํฐ ๊ฒ์์ผ๋ก ๋๋ ์ ์์ต๋๋ค. | |
| ํค์๋ ๊ฒ์๊ณผ ๋ฌ๋ฆฌ, ๋ฒกํฐ ๊ฒ์์ ์ฌ์ฉํ ๋๋ ๋ ๊ฐ์ง๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.</p> <ol data-svelte-h="svelte-368w9u"><li>์ ํฉํ ์๋ฒ ๋ฉ ๋ชจ๋ธ๋ก ๋ฐ์ดํฐ์ ๊ณผ ์ฟผ๋ฆฌ๋ฅผ ์๋ฒ ๋ฉํ๋ ์์ </li> <li>์๋ฒ ๋ฉ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ DB</li></ol> <p data-svelte-h="svelte-1x27ct1">ํ์ง๋ง ์๋ฒ ๋ฉ ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํ ๋ฒกํฐ ๊ฒ์๋ง์ผ๋ก๋ โ์ฌ์ฉ์๊ฐ ์ํ๋ ๋ต๋ณโ์ ๋ณด์ฅํ๊ธฐ ์ด๋ ต์ต๋๋ค.</p> <p data-svelte-h="svelte-1az0hy6">๊ทธ๋์ ๊ฒ์ ๊ณผ์ ์์ ์์ด์ ํธ๊ฐ ์์จ์ ์ผ๋ก ํ๋จํ๊ณ ์ต์ ํํ๋ค๋ฉด, ์ฌ์ฉ์ ์๋์ ๋ ๊ฐ๊น์ด ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.</p> <h3 class="relative group"><a id="agentic-์ ๊ทผ-๋ฐฉ์์-์ฐจ๋ณ์ " class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#agentic-์ ๊ทผ-๋ฐฉ์์-์ฐจ๋ณ์ "><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Agentic ์ ๊ทผ ๋ฐฉ์์ ์ฐจ๋ณ์ </span></h3> <p data-svelte-h="svelte-1qp8008">๊ธฐ์กด ๋ฒกํฐ ๊ฒ์ ์ํฌํ๋ก์ฐ</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START -->๋ฐ์ดํฐ โก ๋ฐ์ดํฐ ์๋ฒ ๋ฉ<span class="hljs-comment">(๊ณ ์ ๋ชจ๋ธ)</span> โก ์ธ๋ฑ์ค ์์ฑ โก ์ฌ์ฉ์ ์ง์ โก ์ ์ฌ๋ ๊ฒ์ โก ๋ต๋ณ<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-1qd4ash">๋๋ํ Agentic ๋ฐฉ์</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START -->์ฌ์ฉ์ ์ง์ ๋ถ์<span class="hljs-comment">(๊ฒ์ ์ ๋ต ์ธ์)</span> โก ์ต์ ์๋ฒ ๋ฉ ๋ชจ๋ธ ์ ํ โก ๋ฐ์ดํฐ ์๋ฒ ๋ฉ โก ์ธ๋ฑ์ค ์์ฑ โก ์ ์ฌ๋ ๊ฒ์ โก ๊ฒ์๊ฒฐ๊ณผ ๋ฐํ์ผ๋ก ๋ต๋ณ ์ ์ <!-- HTML_TAG_END --></pre></div> <h3 class="relative group"><a id="duckdb" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#duckdb"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>DuckDB?</span></h3> <p data-svelte-h="svelte-1b38992">ํ๊น ํ์ด์ค์ ๋ฐ์ดํฐ์ ์ ํ์ผ(parquet) ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋๋ฐ, ์ด๋ ๋น ๋ฅธ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ธ <a href="https://huggingface.co/docs/hub/en/datasets-duckdb" rel="nofollow">DuckDB๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ํ์ผ๋ค๊ณผ ์ํธ์์ฉ</a>ํ ์ ์์ต๋๋ค. ๋ํ DuckDB์ ๊ธฐ๋ฅ ์ค ํ๋๋ <a href="https://duckdb.org/docs/extensions/vss.html" rel="nofollow">๋ฒกํฐ ์ ์ฌ๋ ๊ฒ์</a>์ผ๋ก, ์ธ๋ฑ์ค ์ ๋ฌด์ ๊ด๊ณ์์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.</p> <p data-svelte-h="svelte-1cn3q17">์ด๋ฒ ๋ ธํธ๋ถ์์๋ ๋จ์ผ Agent์ ์ฌ๋ฌ๊ฐ์ง ๋๊ตฌ๋ฅผ ์ฃผ์ด ์ํํ๋ ๊ฐ๋จํ Agentic ๋ฒกํฐ ๊ฒ์ ์์ง์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.</p> <p data-svelte-h="svelte-1af45jk">ํ์ํ ์์กด์ฑ์ ์ค์นํฉ๋๋ค :</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-comment"># ๋ณธ ์์ ํ์ผ์ Python 3.10 ์ด์ ๋ฒ์ ์์๋ง ์คํํ ์ ์์ต๋๋ค.</span> | |
| !pip install -U smolagents datasets sentence-transformers duckdb openai<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-3y32x0">HuggingFace์ ์ถ๋ก API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๋ก๊ทธ์ธํฉ๋๋ค :</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> notebook_login | |
| notebook_login()<!-- HTML_TAG_END --></pre></div> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-keyword">from</span> smolagents <span class="hljs-keyword">import</span> tool | |
| <span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> Dataset | |
| <span class="hljs-keyword">import</span> os | |
| <span class="hljs-comment"># ๋๊ตฌ ์ฌ์ฉ์ ์ํด OPENAI ํค๋ฅผ ๋ฐ๊ธ ๋ฐ์์ผํฉ๋๋ค.</span> | |
| os.environ[<span class="hljs-string">"OPENAI_API_KEY"</span>] = <span class="hljs-string">"YOUR KEY"</span><!-- HTML_TAG_END --></pre></div> <h1 class="relative group"><a id="๋๊ตฌ-์ ์" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#๋๊ตฌ-์ ์"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>๋๊ตฌ ์ ์</span></h1> <p data-svelte-h="svelte-1n2ss7b">์ ์ํ ๋๊ตฌ๋ ์๋์ ๊ฐ์ต๋๋ค.</p> <ul data-svelte-h="svelte-c88pvg"><li>์๋ฒ ๋ฉ ์์ฑ ๋๊ตฌ</li> <li>์ธ๋ฑ์ค ์์ฑ ๋๊ตฌ</li> <li>์ ์ฌ๋ ๊ฒ์ ๋๊ตฌ</li> <li>๋ต๋ณ ์์ฑ ๋๊ตฌ</li></ul> <h3 class="relative group"><a id="๋๊ตฌ1--์๋ฒ ๋ฉ-์์ฑ" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#๋๊ตฌ1--์๋ฒ ๋ฉ-์์ฑ"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>๋๊ตฌ1 : ์๋ฒ ๋ฉ ์์ฑ</span></h3> <p data-svelte-h="svelte-1xn2q0w">์ผ๋ฐ์ ์ผ๋ก, ์๋ฒ ๋ฉ ์์ ์์๋ ์์ ๋ฐฐ์น ์ฌ์ด์ฆ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒญํนํ์ง๋ง ์ฌ๊ธฐ์๋ ๋จ์ํ ๋ฐ์ดํฐ์ ์ ์๋ฒ ๋ฉ์ผ๋ก ๋ณํํ๋ ๊ณผ์ ๋ง ์ํํ๊ฒ ์ต๋๋ค.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-meta">@tool</span> | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">create_embeddings</span>(<span class="hljs-params"> | |
| dataset: Dataset, | |
| model_id: <span class="hljs-built_in">str</span>, | |
| column_name: <span class="hljs-built_in">str</span>, | |
| </span>) -> Dataset: | |
| <span class="hljs-string">""" | |
| ์ฃผ์ด์ง ๋ฐ์ดํฐ์ ์ ๋ํด ์๋ฒ ๋ฉ์ ์์ฑํฉ๋๋ค. | |
| Args: | |
| dataset: ์๋ฒ ๋ฉ์ ์์ฑํ ๋์ ๋ฐ์ดํฐ์ | |
| model_id: ์๋ฒ ๋ฉ์ ์ฌ์ฉํ ๋ชจ๋ธ | |
| column_name: ์๋ฒ ๋ฉํ ์ด ์ด๋ฆ | |
| Returns: | |
| ์๋ฒ ๋ฉ์ด ์ถ๊ฐ๋ ๋ฐ์ดํฐ์ | |
| """</span> | |
| <span class="hljs-keyword">from</span> sentence_transformers <span class="hljs-keyword">import</span> SentenceTransformer | |
| model = SentenceTransformer(model_id) | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">embed_batch</span>(<span class="hljs-params">batch</span>): | |
| embeddings = model.encode(batch[column_name], convert_to_numpy=<span class="hljs-literal">True</span>) | |
| batch[<span class="hljs-string">"embeddings"</span>] = embeddings.tolist() | |
| <span class="hljs-keyword">return</span> batch | |
| dataset = dataset.<span class="hljs-built_in">map</span>(embed_batch, batched=<span class="hljs-literal">True</span>) | |
| <span class="hljs-keyword">return</span> dataset<!-- HTML_TAG_END --></pre></div> <h2 class="relative group"><a id="duckdb๋ก-๋ฒกํฐ-๊ฒ์-์ํํ๊ธฐ" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#duckdb๋ก-๋ฒกํฐ-๊ฒ์-์ํํ๊ธฐ"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>DuckDB๋ก ๋ฒกํฐ ๊ฒ์ ์ํํ๊ธฐ</span></h2> <p data-svelte-h="svelte-18k1ji7"><code>duckdb</code>๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ์์ ๋ฒกํฐ ๊ฒ์์ ์ํํ ์ ์์ต๋๋ค. | |
| ์ธ๋ฑ์ค๋ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์ฉํ์ง ์์ ์ ์์ต๋๋ค. ์ธ๋ฑ์ค๋ฅผ <strong>ํ์ฉํ์ง ์๊ณ </strong> ๊ฒ์ํ๋ ๊ฒ์ ๋ ๋๋ฆฌ์ง๋ง ๋ ์ ํํ๊ณ , ์ธ๋ฑ์ค๋ฅผ <strong>ํ์ฉํ์ฌ</strong> ๊ฒ์ํ๋ ๊ฒ์ ๋ ๋น ๋ฅด์ง๋ง ๋ ์ ํํฉ๋๋ค.</p> <h3 class="relative group"><a id="์ธ๋ฑ์ค๋ฅผ-ํ์ฉํ์ง-์๊ณ -๊ฒ์ํ๊ธฐ" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#์ธ๋ฑ์ค๋ฅผ-ํ์ฉํ์ง-์๊ณ -๊ฒ์ํ๊ธฐ"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>์ธ๋ฑ์ค๋ฅผ ํ์ฉํ์ง ์๊ณ ๊ฒ์ํ๊ธฐ</span></h3> <p data-svelte-h="svelte-of1kmm">์ธ๋ฑ์ค๋ฅผ ํ์ฉํ์ง ์๊ณ ๊ฒ์ํ๋ ๊ฒ์ ๋๋ฆฐ ์์ ์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ์ฝ 10๋ง ํ๊น์ง์ ์์ ๋ฐ์ดํฐ์ ์์๋ ์ถฉ๋ถํ ๋น ๋ฅด๊ฒ ๋์ํฉ๋๋ค. ํ์ง๋ง ์ด๋ฒ ๋ ธํธ๋ถ์์๋ DuckDB์ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํด์ ๊ฒ์ํด๋ณด๊ฒ ์ต๋๋ค.</p> <h3 class="relative group"><a id="์ธ๋ฑ์ค๋ฅผ-ํ์ฉํ์ฌ-๊ฒ์ํ๊ธฐ" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#์ธ๋ฑ์ค๋ฅผ-ํ์ฉํ์ฌ-๊ฒ์ํ๊ธฐ"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>์ธ๋ฑ์ค๋ฅผ ํ์ฉํ์ฌ ๊ฒ์ํ๊ธฐ</span></h3> <p data-svelte-h="svelte-16chymz">์ด ์ ๊ทผ๋ฒ์ ๋ฐ์ดํฐ์ ์ ๋ก์ปฌ ๋ณต์ฌ๋ณธ์ ์์ฑํ๊ณ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ฑ์ค๋ฅผ ์์ฑํฉ๋๋ค. ์ฝ๊ฐ์ ์ค๋ฒํค๋๊ฐ ์์ง๋ง ํ๋ฒ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ํ์๋ ๊ฒ์ ์๋๊ฐ ๊ฐ์ ๋ ๊ฒ์ ๋๋ค.</p> <h3 class="relative group"><a id="๋๊ตฌ2--duckdb-์ธ๋ฑ์ค-๋ง๋ค๊ธฐ" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#๋๊ตฌ2--duckdb-์ธ๋ฑ์ค-๋ง๋ค๊ธฐ"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>๋๊ตฌ2 : DuckDB ์ธ๋ฑ์ค ๋ง๋ค๊ธฐ</span></h3> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-meta">@tool</span> | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">create_db_index</span>(<span class="hljs-params"> | |
| dataset_with_embeddings: Dataset, <span class="hljs-comment"># ์๋ฒ ๋ฉ์ด ํฌํจ๋ ๋ฐ์ดํฐ์ </span> | |
| table_name: <span class="hljs-built_in">str</span>, | |
| embedding_column: <span class="hljs-built_in">str</span> = <span class="hljs-string">"embeddings"</span> | |
| </span>) -> <span class="hljs-literal">None</span>: | |
| <span class="hljs-string">""" | |
| ์๋ฒ ๋ฉ์ด ํฌํจ๋ ๋ฐ์ดํฐ์ ์ ๋ํด DuckDB ์ธ๋ฑ์ค๋ฅผ ์์ฑํฉ๋๋ค. | |
| Args: | |
| dataset_with_embeddings: ์ด๋ฏธ ์๋ฒ ๋ฉ์ด ํฌํจ๋ ๋ฐ์ดํฐ์ | |
| table_name: ์์ฑํ ํ ์ด๋ธ ์ด๋ฆ | |
| embedding_column: ์๋ฒ ๋ฉ ์ด ์ด๋ฆ | |
| Returns: | |
| None | |
| """</span> | |
| <span class="hljs-keyword">import</span> duckdb | |
| <span class="hljs-comment"># VSS ํ์ฅ ์ค์น ๋ฐ ๋ก๋</span> | |
| duckdb.sql(<span class="hljs-string">"INSTALL vss; LOAD vss;"</span>) | |
| duckdb.sql(<span class="hljs-string">f"DROP TABLE IF EXISTS <span class="hljs-subst">{table_name}</span>;"</span>) | |
| <span class="hljs-comment"># ๋ฐ์ดํฐ์ ์ pandas DataFrame์ผ๋ก ๋ณํ</span> | |
| df = dataset_with_embeddings.to_pandas() | |
| <span class="hljs-comment"># DuckDB์ DataFrame ๋ฑ๋ก</span> | |
| duckdb.register(<span class="hljs-string">f"<span class="hljs-subst">{table_name}</span>_temp"</span>, df) | |
| <span class="hljs-comment"># ๋ชจ๋ธ์์ ์๋ฒ ๋ฉ ์ฐจ์ ๊ฐ์ ธ์ค๊ธฐ</span> | |
| embedding_dim = <span class="hljs-built_in">len</span>(df[embedding_column].iloc[<span class="hljs-number">0</span>]) | |
| <span class="hljs-comment"># embedding_dim = model.get_sentence_embedding_dimension()</span> | |
| <span class="hljs-comment"># ํ ์ด๋ธ ์์ฑ (์๋ฒ ๋ฉ์ FLOAT ๋ฐฐ์ด๋ก ๋ณํ)</span> | |
| duckdb.sql(<span class="hljs-string">f""" | |
| CREATE TABLE <span class="hljs-subst">{table_name}</span> AS | |
| SELECT *, <span class="hljs-subst">{embedding_column}</span>::FLOAT[<span class="hljs-subst">{embedding_dim}</span>] AS <span class="hljs-subst">{embedding_column}</span>_float | |
| FROM <span class="hljs-subst">{table_name}</span>_temp; | |
| """</span>) | |
| <span class="hljs-comment"># HNSW ์ธ๋ฑ์ค ์์ฑ</span> | |
| duckdb.sql(<span class="hljs-string">f""" | |
| CREATE INDEX idx_<span class="hljs-subst">{embedding_column}</span> ON <span class="hljs-subst">{table_name}</span> | |
| USING HNSW (<span class="hljs-subst">{embedding_column}</span>_float) WITH (metric = 'cosine'); | |
| """</span>) | |
| <span class="hljs-comment"># ์์ ํ ์ด๋ธ ์ ๋ฆฌ</span> | |
| duckdb.sql(<span class="hljs-string">f"DROP VIEW IF EXISTS <span class="hljs-subst">{table_name}</span>_temp;"</span>)<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-b4gp9c">์ด ๋๊ตฌ๋ฅผ ํตํด ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒกํฐ ๊ฒ์์ ์ํํ ์ ์์ผ๋ฉฐ, ๊ฒฐ๊ณผ๋ ์ฆ์ ๋ฐํ๋ฉ๋๋ค.</p> <h3 class="relative group"><a id="๋๊ตฌ3--๋ฒกํฐ-๊ฒ์-์ํํ๊ธฐ" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#๋๊ตฌ3--๋ฒกํฐ-๊ฒ์-์ํํ๊ธฐ"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>๋๊ตฌ3 : ๋ฒกํฐ ๊ฒ์ ์ํํ๊ธฐ</span></h3> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-meta">@tool</span> | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">similarity_search_with_duckdb_index</span>(<span class="hljs-params"> | |
| query: <span class="hljs-built_in">str</span>, | |
| table_name: <span class="hljs-built_in">str</span>, | |
| model_id: <span class="hljs-built_in">str</span>, | |
| k: <span class="hljs-built_in">int</span> = <span class="hljs-number">5</span>, | |
| embedding_column: <span class="hljs-built_in">str</span> = <span class="hljs-string">"embeddings"</span> | |
| </span>)-> <span class="hljs-built_in">dict</span>: | |
| <span class="hljs-string">""" | |
| DuckDB ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํด ๋ฒกํฐ ๊ฒ์์ ์ํํฉ๋๋ค. | |
| Args: | |
| query: ๊ฒ์ํ ์ฟผ๋ฆฌ ๋ฌธ์์ด | |
| model_id: ์๋ฒ ๋ฉ์ ์ฌ์ฉํ ๋ชจ๋ธ | |
| k: ๋ฐํํ ๊ฒฐ๊ณผ ์ | |
| table_name: ๊ฒ์ํ ํ ์ด๋ธ ์ด๋ฆ | |
| embedding_column: ์๋ฒ ๋ฉ ์ปฌ๋ผ ์ด๋ฆ | |
| Returns: | |
| dict: ๊ฒ์ ๊ฒฐ๊ณผ | |
| """</span> | |
| <span class="hljs-keyword">from</span> sentence_transformers <span class="hljs-keyword">import</span> SentenceTransformer | |
| <span class="hljs-keyword">import</span> duckdb | |
| model = SentenceTransformer(model_id) | |
| embedding = model.encode(query).tolist() | |
| <span class="hljs-keyword">return</span> duckdb.sql( | |
| query=<span class="hljs-string">f""" | |
| SELECT *, array_cosine_distance(<span class="hljs-subst">{embedding_column}</span>_float, <span class="hljs-subst">{embedding}</span>::FLOAT[<span class="hljs-subst">{model.get_sentence_embedding_dimension()}</span>]) as distance | |
| FROM <span class="hljs-subst">{table_name}</span> | |
| ORDER BY distance | |
| LIMIT <span class="hljs-subst">{k}</span>; | |
| """</span> | |
| ).to_df()<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-1yfgbs2">๋ฌด๊ฑฐ์ด ๋ฒกํฐ ๊ฒ์ ์์ง์ ๋ฐ๋ก ๋ฐฐํฌํ ํ์ ์๊ณ , ์ ์ฅ์๋ ํ๋ธ์์ ์ฒ๋ฆฌ๋ฉ๋๋ค.</p> <h3 class="relative group"><a id="๋๊ตฌ4--๋ต๋ณ-์์ฑ-๋๊ตฌ" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#๋๊ตฌ4--๋ต๋ณ-์์ฑ-๋๊ตฌ"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>๋๊ตฌ4 : ๋ต๋ณ ์์ฑ ๋๊ตฌ</span></h3> <p data-svelte-h="svelte-1k09lse">์ ์ฌ๋ ๊ฒ์ ๊ฒฐ๊ณผ ์ฒญํฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก, LLM์ด ์ฌ์ฉ์๊ฐ ์ํ ๋งํ ๋ต๋ณ์ ์์ฑํฉ๋๋ค.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-meta">@tool</span> | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">generate_answer</span>(<span class="hljs-params">chunks: <span class="hljs-built_in">list</span>, query: <span class="hljs-built_in">str</span></span>) -> <span class="hljs-built_in">str</span>: | |
| <span class="hljs-string">""" | |
| ์ฟผ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฃผ์ด์ง ํ ์คํธ ์ฒญํฌ ๋ชฉ๋ก์์ ๋ต๋ณ์ ์์ฑํฉ๋๋ค. | |
| Args: | |
| chunks: ๋ต๋ณ ์์ฑ์ ์ฌ์ฉํ ํ ์คํธ ์ฒญํฌ ๋ชฉ๋ก | |
| query: ๋ต๋ณํ ์ฟผ๋ฆฌ ๋ฌธ์์ด | |
| Returns: | |
| str: ์์ฑ๋ ๋ต๋ณ | |
| """</span> | |
| <span class="hljs-keyword">import</span> openai <span class="hljs-comment"># OPENAI ํค ๋ฐ๊ธ์ด ํ์ํฉ๋๋ค.</span> | |
| context = <span class="hljs-string">"\n\n"</span>.join(chunks) | |
| prompt = <span class="hljs-string">f"Context:\n<span class="hljs-subst">{context}</span>\n\nQuestion: <span class="hljs-subst">{query}</span>\nAnswer:"</span> | |
| response = openai.ChatCompletion.create( | |
| model=<span class="hljs-string">"gpt-4"</span>, | |
| messages=[{<span class="hljs-string">"role"</span>: <span class="hljs-string">"user"</span>, <span class="hljs-string">"content"</span>: prompt}] | |
| ) | |
| <span class="hljs-keyword">return</span> response[<span class="hljs-string">"choices"</span>][<span class="hljs-number">0</span>][<span class="hljs-string">"message"</span>][<span class="hljs-string">"content"</span>]<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-en7cjr">๋๊ตฌ๋ฅผ ์ ์ํ์์ผ๋, ๋ฐ์ดํฐ์ ์ ๋ก๋ํ๊ณ ์์ด์ ํธ๋ฅผ ๋์ํด๋ณด๊ฒ ์ต๋๋ค.</p> <p data-svelte-h="svelte-53u7m">์ฌ์ฉํ ๋ฐ์ดํฐ์ ์ <a href="https://huggingface.co/datasets/huggingface-KREW/KoCultre-Descriptions" rel="nofollow">huggingface-KREW/KoCultre-Descriptions</a>์ผ๋ก, ํ๊ตญ์ด ๋ฐ(meme)์ ๋ํ ๋ฐ์ดํฐ์ ๋๋ค.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset | |
| dataset = load_dataset(<span class="hljs-string">"huggingface-KREW/KoCultre-Descriptions"</span>)<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-gsyogr">์์ด์ ํธ๋ฅผ ์ ์ํฉ๋๋ค. ์ฌ์ฉํ ๋ชจ๋ธ์ Qwen/Qwen2.5-Coder-32B-Instruct ์ ๋๋ค.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-keyword">from</span> smolagents <span class="hljs-keyword">import</span> CodeAgent, InferenceClientModel | |
| model = InferenceClientModel( | |
| <span class="hljs-string">"Qwen/Qwen2.5-Coder-32B-Instruct"</span>, | |
| provider=<span class="hljs-string">"together"</span>, | |
| max_tokens=<span class="hljs-number">2048</span> | |
| ) | |
| tools = [ | |
| create_embeddings, <span class="hljs-comment"># ์๋ฒ ๋ฉ ์์ฑ ๋๊ตฌ</span> | |
| create_db_index, <span class="hljs-comment"># ์ธ๋ฑ์ค ์์ฑ ๋๊ตฌ</span> | |
| similarity_search_with_duckdb_index, <span class="hljs-comment"># ์ ์ฌ๋ ๊ฒ์ ๋๊ตฌ</span> | |
| generate_answer <span class="hljs-comment"># ๋ต๋ณ ์์ฑ ๋๊ตฌ</span> | |
| ] | |
| agent = CodeAgent( | |
| model=model, | |
| tools=tools, | |
| verbosity_level=<span class="hljs-number">2</span>, | |
| max_steps=<span class="hljs-number">15</span> | |
| )<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-25stim">์์ด์ ํธ๊ฐ ์์จ์ ์ผ๋ก ์๋ฒ ๋ฉ ๋ชจ๋ธ์ ํํ ์ ์๋๋ก ํ๋กฌํํธ๋ฅผ ๊ตฌ์ฑํ๊ฒ ์ต๋๋ค.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-keyword">def</span> <span class="hljs-title function_">agentic_prompt</span>(<span class="hljs-params">query: <span class="hljs-built_in">str</span></span>): | |
| <span class="hljs-keyword">return</span> <span class="hljs-string">f""" | |
| ๋น์ ์ ์ง๋ฅํ ๊ฒ์ ์ ๋ฌธ๊ฐ์ ๋๋ค. <span class="hljs-subst">{query}</span>: | |
| ๊ฒ์์ ์ํด ๋จผ์ ์ฟผ๋ฆฌ์ ๋ฐ์ดํฐ์ ์ ๋ถ์ํ๊ณ , ๋ถ์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๊ฐ์ฅ ์ ํฉํ ์๋ฒ ๋ฉ ๋ชจ๋ธ์ ์ ํํ์ธ์ | |
| - sentence-transformers/all-MiniLM-L6-v2 (fast, lightweight, good for simple queries) | |
| - sentence-transformers/all-mpnet-base-v2 (balanced performance) | |
| - intfloat/e5-large-v2 (high quality for complex tasks) | |
| - minishlab/potion-base-8M (very efficient) | |
| """</span><!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-q81us6">๋ฐ์ดํฐ์ ์ ๋ํ ์ค๋ช ๊ณผ, ๊ฒ์์ด๋ฅผ ์ ๋ ฅํ๊ณ ๊ฒ์์์ง ์์ด์ ํธ๋ฅผ ์คํํฉ๋๋ค.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START -->result = agent.run( | |
| agentic_prompt(query=<span class="hljs-string">"์์ด๋ ๊ด๋ จ ๋ฐ ์๋ ค์ฃผ์ธ์"</span>), | |
| additional_args={<span class="hljs-string">"dataset"</span>: dataset, | |
| <span class="hljs-string">"dataset_description"</span>: <span class="hljs-string">"ํ๊ตญ์ด ๋ฐ(meme)์ ๋ํ ๋ฐ์ดํฐ์ ์ผ๋ก, meme๊ณผ(title), meme์ ๋ป(content)์ ์๋ ค์ค๋ค."</span>, | |
| <span class="hljs-string">"column_name"</span>: <span class="hljs-string">"content"</span>} | |
| )<!-- HTML_TAG_END --></pre></div> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-meta">>>> </span><span class="hljs-built_in">print</span>(<span class="hljs-string">f"Final result: <span class="hljs-subst">{result}</span>"</span>)<!-- HTML_TAG_END --></pre></div> <pre data-svelte-h="svelte-dwlxai">Final result: ์๋ง๊ฐ๋๋ ๋ฐ์ ์ต๊ทผ SNS์ ์จ๋ผ์ธ ์ปค๋ฎค๋ํฐ์์ ์ ํํ๋ ํํ์ผ๋ก, ์ฃผ๋ก ๋๊ตฐ๊ฐ๊ฐ ๋งค์ฐ ๊ท์ฝ๊ฑฐ๋ ์ฌ๋์ค๋ฌ์์ ๋ชจ์ฑ์ ์ ๊ฐ์ ์ ๋๋ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ํํ์ ์์ด๋ ํฌ๋ค ๋ฌธํ์์ ์์ฃผ ์ฌ์ฉ๋๋ฉฐ, '์๋ง๊ฐ ๋ผ'๊ฐ ์ฌ๋ฐ๋ฅธ ํ๊ธฐ์ด์ง๋ง ์๋์ ์ธ ๋ง์ถค๋ฒ ํ๊ดด๋ฅผ ํตํด ๋ฐ์ผ๋ก์์ ๋ ํนํ ์ฑ๊ฒฉ์ ๊ฐ๊ฒ ๋์์ต๋๋ค. | |
| </pre> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-keyword">Final</span> <span class="hljs-keyword">result</span>: ์๋ง๊ฐ๋๋ ๋ฐ์ ์ต๊ทผ SNS์ ์จ๋ผ์ธ ์ปค๋ฎค๋ํฐ์์ ์ ํํ๋ ํํ์ผ๋ก, ์ฃผ๋ก ๋๊ตฐ๊ฐ๊ฐ ๋งค์ฐ ๊ท์ฝ๊ฑฐ๋ ์ฌ๋์ค๋ฌ์์ ๋ชจ์ฑ์ ์ ๊ฐ์ ์ ๋๋ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ํํ์ ์์ด๋ ํฌ๋ค ๋ฌธํ์์ ์์ฃผ ์ฌ์ฉ๋๋ฉฐ, <span class="hljs-string">'์๋ง๊ฐ ๋ผ'</span>๊ฐ ์ฌ๋ฐ๋ฅธ ํ๊ธฐ์ด์ง๋ง ์๋์ ์ธ ๋ง์ถค๋ฒ ํ๊ดด๋ฅผ ํตํด ๋ฐ์ผ๋ก์์ ๋ ํนํ ์ฑ๊ฒฉ์ ๊ฐ๊ฒ ๋์์ต๋๋ค.<!-- HTML_TAG_END --></pre></div> <h3 class="relative group"><a id="conclusion" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#conclusion"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Conclusion</span></h3> <p data-svelte-h="svelte-1xsmqoq">๋จ์ํ ๊ฒ์ ๊ฒฐ๊ณผ๋ง์ ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์๋๋ผ, ๊ฒ์๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ์ฟผ๋ฆฌ์ ๋ฐ๋ฅธ ๋ต๋ณ์ ์ ์ ํด์ ๋ณด์ฌ์ฃผ์์ต๋๋ค.โ๐ป</p> <p data-svelte-h="svelte-16cnm9y">์ง๊ธ๊น์ง ๊ฐ๋จํ ์์ด์ ํธ ์์คํ ์ ๋ง๋ค์ด๋ณด์์ต๋๋ค. ์ฌ๊ธฐ์ ํ์ง ํ๊ฐ, ๋ถ์ ๋ฑ์ ์ถ๊ฐํ๋ค๋ฉด ์ง์ ํ Agentic ๊ฒ์ ์์ง์ ๊ตฌํํ ์ ์์ต๋๋ค.</p> <a class="!text-gray-400 !no-underline text-sm flex items-center not-prose mt-4" href="https://github.com/huggingface/cookbook/blob/main/notebooks/ko/vector_search_agent.md" target="_blank"><svg class="mr-1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M31,16l-7,7l-1.41-1.41L28.17,16l-5.58-5.59L24,9l7,7z"></path><path d="M1,16l7-7l1.41,1.41L3.83,16l5.58,5.59L8,23l-7-7z"></path><path d="M12.419,25.484L17.639,6.552l1.932,0.518L14.351,26.002z"></path></svg> <span data-svelte-h="svelte-zjs2n5"><span class="underline">Update</span> on GitHub</span></a> <p></p> | |
| <script> | |
| { | |
| __sveltekit_1d6oska = { | |
| assets: "/docs/cookbook/main/ko", | |
| base: "/docs/cookbook/main/ko", | |
| env: {} | |
| }; | |
| const element = document.currentScript.parentElement; | |
| const data = [null,null]; | |
| Promise.all([ | |
| import("/docs/cookbook/main/ko/_app/immutable/entry/start.4b65b044.js"), | |
| import("/docs/cookbook/main/ko/_app/immutable/entry/app.b90033ef.js") | |
| ]).then(([kit, app]) => { | |
| kit.start(app, element, { | |
| node_ids: [0, 12], | |
| data, | |
| form: null, | |
| error: null | |
| }); | |
| }); | |
| } | |
| </script> | |
Xet Storage Details
- Size:
- 56.1 kB
- Xet hash:
- b66d9e52cd52aeb5d382122f520f836d63793c93e29af67673029cca5111a2d0
ยท
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.