Buckets:

hf-doc-build/doc / cookbook /main /ko /vector_search_agent.html
rtrm's picture
download
raw
56.1 kB
<meta charset="utf-8" /><meta name="hf:doc:metadata" content="{&quot;title&quot;:&quot;๐Ÿค– ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ์—์ด์ „ํŠธ: ํ—ˆ๊น…ํŽ˜์ด์Šค ํ—ˆ๋ธŒ๋ฅผ ๋ฐฑ์—”๋“œ๋กœ ํ•˜๋Š” ์ง€๋Šฅํ˜• ๊ฒ€์ƒ‰ ์—”์ง„&quot;,&quot;local&quot;:&quot;-๋ฒกํ„ฐ-๊ฒ€์ƒ‰-์—์ด์ „ํŠธ-ํ—ˆ๊น…ํŽ˜์ด์Šค-ํ—ˆ๋ธŒ๋ฅผ-๋ฐฑ์—”๋“œ๋กœ-ํ•˜๋Š”-์ง€๋Šฅํ˜•-๊ฒ€์ƒ‰-์—”์ง„&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Agentic ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์ฐจ๋ณ„์ &quot;,&quot;local&quot;:&quot;agentic-์ ‘๊ทผ-๋ฐฉ์‹์˜-์ฐจ๋ณ„์ &quot;,&quot;sections&quot;:[],&quot;depth&quot;:3},{&quot;title&quot;:&quot;DuckDB?&quot;,&quot;local&quot;:&quot;duckdb&quot;,&quot;sections&quot;:[],&quot;depth&quot;:3}],&quot;depth&quot;: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="{&quot;title&quot;:&quot;๐Ÿค– ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ์—์ด์ „ํŠธ: ํ—ˆ๊น…ํŽ˜์ด์Šค ํ—ˆ๋ธŒ๋ฅผ ๋ฐฑ์—”๋“œ๋กœ ํ•˜๋Š” ์ง€๋Šฅํ˜• ๊ฒ€์ƒ‰ ์—”์ง„&quot;,&quot;local&quot;:&quot;-๋ฒกํ„ฐ-๊ฒ€์ƒ‰-์—์ด์ „ํŠธ-ํ—ˆ๊น…ํŽ˜์ด์Šค-ํ—ˆ๋ธŒ๋ฅผ-๋ฐฑ์—”๋“œ๋กœ-ํ•˜๋Š”-์ง€๋Šฅํ˜•-๊ฒ€์ƒ‰-์—”์ง„&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Agentic ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์ฐจ๋ณ„์ &quot;,&quot;local&quot;:&quot;agentic-์ ‘๊ทผ-๋ฐฉ์‹์˜-์ฐจ๋ณ„์ &quot;,&quot;sections&quot;:[],&quot;depth&quot;:3},{&quot;title&quot;:&quot;DuckDB?&quot;,&quot;local&quot;:&quot;duckdb&quot;,&quot;sections&quot;:[],&quot;depth&quot;:3}],&quot;depth&quot;: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">&quot;OPENAI_API_KEY&quot;</span>] = <span class="hljs-string">&quot;YOUR KEY&quot;</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>) -&gt; Dataset:
<span class="hljs-string">&quot;&quot;&quot;
์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ์…‹์— ๋Œ€ํ•ด ์ž„๋ฒ ๋”ฉ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
Args:
dataset: ์ž„๋ฒ ๋”ฉ์„ ์ƒ์„ฑํ•  ๋Œ€์ƒ ๋ฐ์ดํ„ฐ์…‹
model_id: ์ž„๋ฒ ๋”ฉ์— ์‚ฌ์šฉํ•  ๋ชจ๋ธ
column_name: ์ž„๋ฒ ๋”ฉํ•  ์—ด ์ด๋ฆ„
Returns:
์ž„๋ฒ ๋”ฉ์ด ์ถ”๊ฐ€๋œ ๋ฐ์ดํ„ฐ์…‹
&quot;&quot;&quot;</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">&quot;embeddings&quot;</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">&quot;embeddings&quot;</span>
</span>) -&gt; <span class="hljs-literal">None</span>:
<span class="hljs-string">&quot;&quot;&quot;
์ž„๋ฒ ๋”ฉ์ด ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ์…‹์— ๋Œ€ํ•ด DuckDB ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
Args:
dataset_with_embeddings: ์ด๋ฏธ ์ž„๋ฒ ๋”ฉ์ด ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ์…‹
table_name: ์ƒ์„ฑํ•  ํ…Œ์ด๋ธ” ์ด๋ฆ„
embedding_column: ์ž„๋ฒ ๋”ฉ ์—ด ์ด๋ฆ„
Returns:
None
&quot;&quot;&quot;</span>
<span class="hljs-keyword">import</span> duckdb
<span class="hljs-comment"># VSS ํ™•์žฅ ์„ค์น˜ ๋ฐ ๋กœ๋“œ</span>
duckdb.sql(<span class="hljs-string">&quot;INSTALL vss; LOAD vss;&quot;</span>)
duckdb.sql(<span class="hljs-string">f&quot;DROP TABLE IF EXISTS <span class="hljs-subst">{table_name}</span>;&quot;</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&quot;<span class="hljs-subst">{table_name}</span>_temp&quot;</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&quot;&quot;&quot;
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;
&quot;&quot;&quot;</span>)
<span class="hljs-comment"># HNSW ์ธ๋ฑ์Šค ์ƒ์„ฑ</span>
duckdb.sql(<span class="hljs-string">f&quot;&quot;&quot;
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 = &#x27;cosine&#x27;);
&quot;&quot;&quot;</span>)
<span class="hljs-comment"># ์ž„์‹œ ํ…Œ์ด๋ธ” ์ •๋ฆฌ</span>
duckdb.sql(<span class="hljs-string">f&quot;DROP VIEW IF EXISTS <span class="hljs-subst">{table_name}</span>_temp;&quot;</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">&quot;embeddings&quot;</span>
</span>)-&gt; <span class="hljs-built_in">dict</span>:
<span class="hljs-string">&quot;&quot;&quot;
DuckDB ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
Args:
query: ๊ฒ€์ƒ‰ํ•  ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด
model_id: ์ž„๋ฒ ๋”ฉ์— ์‚ฌ์šฉํ•  ๋ชจ๋ธ
k: ๋ฐ˜ํ™˜ํ•  ๊ฒฐ๊ณผ ์ˆ˜
table_name: ๊ฒ€์ƒ‰ํ•  ํ…Œ์ด๋ธ” ์ด๋ฆ„
embedding_column: ์ž„๋ฒ ๋”ฉ ์ปฌ๋Ÿผ ์ด๋ฆ„
Returns:
dict: ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ
&quot;&quot;&quot;</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&quot;&quot;&quot;
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>;
&quot;&quot;&quot;</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>) -&gt; <span class="hljs-built_in">str</span>:
<span class="hljs-string">&quot;&quot;&quot;
์ฟผ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฃผ์–ด์ง„ ํ…์ŠคํŠธ ์ฒญํฌ ๋ชฉ๋ก์—์„œ ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
Args:
chunks: ๋‹ต๋ณ€ ์ƒ์„ฑ์— ์‚ฌ์šฉํ•  ํ…์ŠคํŠธ ์ฒญํฌ ๋ชฉ๋ก
query: ๋‹ต๋ณ€ํ•  ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด
Returns:
str: ์ƒ์„ฑ๋œ ๋‹ต๋ณ€
&quot;&quot;&quot;</span>
<span class="hljs-keyword">import</span> openai <span class="hljs-comment"># OPENAI ํ‚ค ๋ฐœ๊ธ‰์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.</span>
context = <span class="hljs-string">&quot;\n\n&quot;</span>.join(chunks)
prompt = <span class="hljs-string">f&quot;Context:\n<span class="hljs-subst">{context}</span>\n\nQuestion: <span class="hljs-subst">{query}</span>\nAnswer:&quot;</span>
response = openai.ChatCompletion.create(
model=<span class="hljs-string">&quot;gpt-4&quot;</span>,
messages=[{<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;user&quot;</span>, <span class="hljs-string">&quot;content&quot;</span>: prompt}]
)
<span class="hljs-keyword">return</span> response[<span class="hljs-string">&quot;choices&quot;</span>][<span class="hljs-number">0</span>][<span class="hljs-string">&quot;message&quot;</span>][<span class="hljs-string">&quot;content&quot;</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">&quot;huggingface-KREW/KoCultre-Descriptions&quot;</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">&quot;Qwen/Qwen2.5-Coder-32B-Instruct&quot;</span>,
provider=<span class="hljs-string">&quot;together&quot;</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&quot;&quot;&quot;
๋‹น์‹ ์€ ์ง€๋Šฅํ˜• ๊ฒ€์ƒ‰ ์ „๋ฌธ๊ฐ€์ž…๋‹ˆ๋‹ค. <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)
&quot;&quot;&quot;</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">&quot;์•„์ด๋Œ ๊ด€๋ จ ๋ฐˆ ์•Œ๋ ค์ฃผ์„ธ์š”&quot;</span>),
additional_args={<span class="hljs-string">&quot;dataset&quot;</span>: dataset,
<span class="hljs-string">&quot;dataset_description&quot;</span>: <span class="hljs-string">&quot;ํ•œ๊ตญ์–ด ๋ฐˆ(meme)์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ, meme๊ณผ(title), meme์˜ ๋œป(content)์„ ์•Œ๋ ค์ค€๋‹ค.&quot;</span>,
<span class="hljs-string">&quot;column_name&quot;</span>: <span class="hljs-string">&quot;content&quot;</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">&gt;&gt;&gt; </span><span class="hljs-built_in">print</span>(<span class="hljs-string">f&quot;Final result: <span class="hljs-subst">{result}</span>&quot;</span>)<!-- HTML_TAG_END --></pre></div> <pre data-svelte-h="svelte-dwlxai">Final result: ์—„๋งˆ๊ฐ€๋˜๋Š” ๋ฐˆ์€ ์ตœ๊ทผ SNS์™€ ์˜จ๋ผ์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์œ ํ–‰ํ•˜๋Š” ํ‘œํ˜„์œผ๋กœ, ์ฃผ๋กœ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋งค์šฐ ๊ท€์—ฝ๊ฑฐ๋‚˜ ์‚ฌ๋ž‘์Šค๋Ÿฌ์›Œ์„œ ๋ชจ์„ฑ์• ์  ๊ฐ์ •์„ ๋А๋‚„ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ํ‘œํ˜„์€ ์•„์ด๋Œ ํŒฌ๋ค ๋ฌธํ™”์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋ฉฐ, &#39;์—„๋งˆ๊ฐ€ ๋ผ&#39;๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ํ‘œ๊ธฐ์ด์ง€๋งŒ ์˜๋„์ ์ธ ๋งž์ถค๋ฒ• ํŒŒ๊ดด๋ฅผ ํ†ตํ•ด ๋ฐˆ์œผ๋กœ์„œ์˜ ๋…ํŠนํ•œ ์„ฑ๊ฒฉ์„ ๊ฐ–๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
</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">&#x27;์—„๋งˆ๊ฐ€ ๋ผ&#x27;</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.