์ „์ฒด ๊ธ€ 63

[AI Agent] LangGraph1

1. LangGraph๋ž€? : LangCahain ์ƒํƒœ๊ณ„์—์„œ ๋งŒ๋“  ๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ ๊ธฐ๋ฐ˜ ์›Œํฌํ”Œ๋กœ์šฐ/์—์ด์ „ํŠธ ๊ฐœ๋ฐœ์šฉ ๋Ÿฐํƒ€์ž„ ํ”„๋ ˆ์ž„์›Œํฌ • ํŠน์ง• : ์‚ฌ์ดํด(์ˆœํ™˜) ์ง€์› → LCEL๋กœ ๊ตฌํ˜„ ๋ถˆ๊ฐ€๋Šฅํ•œ '๋งŒ์กฑ์Šค๋Ÿฝ์ง€ ์•Š์œผ๋ฉด ๋˜๋Œ์•„๊ฐ€๊ธฐ' ๋กœ์ง ๊ตฌํ˜„ ๊ฐ€๋Šฅ • ๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ : ๋ฐ์ดํ„ฐ ๊ฐ„ ๊ด€๊ณ„ ํ‘œํ˜„ํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ - Node(์ž‘์—… ์ˆ˜ํ–‰) + Edge(์ž‘์—… ํ๋ฆ„ ์ •์˜) • ๋Ÿฐํƒ€์ž„ ํ”„๋ ˆ์ž„์›Œํฌ : ๋งŒ๋“  ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์‹คํ–‰ ์‹œ์ ๊นŒ์ง€ ๊ด€๋ฆฌ • LangChain vs LangGraphํ•ญ๋ชฉLangChainLangGraph์‹คํ–‰ ํ๋ฆ„์„ ํ˜•/์ˆœ์ฐจ ์ค‘์‹ฌ๊ทธ๋ž˜ํ”„ ๊ธฐ๋ฐ˜(๋ถ„๊ธฐ/๋ฃจํ”„)์ƒํƒœ ๊ด€๋ฆฌ๊ธฐ๋ณธ ๋ฉ”๋ชจ๋ฆฌ/์„ธ์…˜ ์ค‘์‹ฌ์ง€์† ์ƒํƒœ(durable)์ถ”์ƒํ™” ์ˆ˜์ค€LCEL ๊ณ ์ˆ˜์ค€ API์ €์ˆ˜์ค€ ์ œ์–ด์ ํ•ฉ ์šฉ๋„๊ฐ„๋‹จํ•œ ์—์ด์ „ํŠธ/์›Œํฌํ”Œ๋กœ์šฐ๋ณต์žกํ•œ ๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ, ์ƒํƒœ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ ..

STUDY/AI Agent 2026.07.16

[AI Agent] AI Agent์™€ ToolCalling2

7. ์‚ฌ์šฉ์ž ์ •์˜ Tool ๊ตฌํ˜„ โž€ @tool ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ • ํ•จ์ˆ˜ ์ด๋ฆ„ → tool ์ด๋ฆ„, ํŒŒ๋ผ๋ฏธํ„ฐ type hint → ํŒŒ๋ผ๋ฏธํ„ฐ ์Šคํ‚ค๋งˆ, docstring → description • ํŒŒ๋ผ๋ฏธํ„ฐ์— ์ƒ์„ธ ์„ค๋ช… ํ•„์š” ์‹œ pydantic.BaseModel + Field๋กœ args_schema ์ง€์ •# ์‚ฌ์น™์—ฐ์‚ฐ ํˆด ์ •์˜@tooldef plus(num1: int|float, num2: int|float) -> int|float: """๋ฐ›์€ ๋‘ ๊ฐœ์˜ ์ˆ˜๋ฅผ ๋ง์…ˆํ•˜๋Š” ํˆด""" return num1 + num2 # ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค๋ช… ํ•„์š” ์‹œclass DivideToolParameter(BaseModel): num1: int|float = Field(..., description="๋‚˜๋ˆŒ ๋•Œ ์‚ฌ์šฉํ•  ์ฒซ ๋ฒˆ์งธ..

STUDY/AI Agent 2026.07.14

[AI Agent] AI Agent์™€ ToolCalling1

1. AI Agent ๊ฐœ์š” • AI Agent : LLM์„ ์ถ”๋ก &์˜์‚ฌ๊ฒฐ์ • ์ค‘์‹ฌ์œผ๋กœ ์‚ฌ์šฉํ•ด '๊ณ„ํš ์ˆ˜๋ฆฝ → ์‹คํ–‰ → ๊ด€์ฐฐ → ํŒ๋‹จ' ๋ฐ˜๋ณตํ•˜๋ฉฐ ์ž์œจ์ ์œผ๋กœ ๋ชฉํ‘œ ๋‹ฌ์„ฑํ•˜๋Š” ์‹œ์Šคํ…œ • Workflow vs Agent - Workflow : ๋ฏธ๋ฆฌ ์ •ํ•ด์ง„ ์ ˆ์ฐจ๋Œ€๋กœ ์‹คํ–‰(๋ฐ˜๋ณต์ ·์ •ํ˜•ํ™”๋œ ์ž‘์—…์— ์ ํ•ฉ) - Agent : ์ƒํ™ฉ์— ๋”ฐ๋ผ ์Šค์Šค๋กœ ํŒ๋‹จํ•ด ๋„๊ตฌ·ํ–‰๋™ ์„ ํƒ(์ค‘๊ฐ„ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ํ๋ฆ„ ๋‹ฌ๋ผ์ง€๋Š” ๋ฌธ์ œ์— ์ ํ•ฉ) • ์ฃผ์š” ํŠน์ง• โž€ ์ž์œจ์„ฑ : LLM ์ถ”๋ก  ์Šค์Šค๋กœ ํŒ๋‹จ(๊ทœ์น™ ๊ธฐ๋ฐ˜ X) โž ๋ชฉํ‘œ ์ง€ํ–ฅ์„ฑ : "์ด ํ–‰๋™์ด ๋ชฉํ‘œ ๋‹ฌ์„ฑ์— ๋„์›€์ด ๋˜๋Š”๊ฐ€" ๊ธฐ์ค€ ํŒ๋‹จ โž‚ ๋„๊ตฌ ํ™œ์šฉ : ์™ธ๋ถ€ API·๋„๊ตฌ๋กœ ์‹ค์ œ ์ž‘์—… ์ˆ˜ํ–‰ โžƒ ์ธ๊ฐ„ ๊ฐœ์ž… ์ตœ์†Œํ™” : ์‚ฌ๋žŒ์€ ์ดˆ๊ธฐ ๋ชฉํ‘œ ์ œ์‹œ&์ตœ์ข… ์Šน์ธ ์ •๋„๋งŒ ๊ฐœ์ž… 2. ์‹ฑ๊ธ€ ์—์ด์ „ํŠธ vs ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ • ..

STUDY/AI Agent 2026.07.13

[LLM] Graph Schema ์„ค๊ณ„, ๋ฒกํ„ฐ ๊ฒ€์ƒ‰&Text-to-Cypher ์กฐํšŒ

1. LLM ์ด์šฉํ•œ ๊ทธ๋ž˜ํ”„ ์Šคํ‚ค๋งˆ ์„ค๊ณ„(GraphRAG ๊ด€์ ) : ๋น„์ •ํ˜• ํ…์ŠคํŠธ ๋ฌธ์„œ๋ฅผ LLM์— ๋„ฃ์–ด Neo4j์— ์ ์žฌ ๊ฐ€๋Šฅํ•œ ๋…ธ๋“œ/๊ด€๊ณ„/์†์„ฑ ์Šคํ‚ค๋งˆ&Cypher ์ฟผ๋ฆฌ ์ž๋™ ์ƒ์„ฑโ—๏ธ LLM ์‚ฐ์ถœ๋ฌผ : ํ•ญ์ƒ ์ดˆ์•ˆ. ๋ฐ์ดํ„ฐ ์ค‘๋ณต·๊ด€๊ณ„ ๋ฐฉํ–ฅ·๋„ค์ด๋ฐ ๊ทœ์น™·๊ณ ์œ  ์‹๋ณ„์ž·๊ฒ€์ƒ‰ ๋ชฉ์  ๋“ฑ์€ ์‚ฌ๋žŒ์ด ๊ฒ€ํ†  1-1. ๋…ธ๋“œ(Label) ์„ค๊ณ„ ์›์น™ • ๋ฌธ์„œ์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์‹๋ณ„, ๋‹ค๋ฅธ ๊ฐœ์ฒด๊ฐ€ ์ฐธ์กฐ ๊ฐ€๋Šฅ. ํƒ์ƒ‰์˜ ์‹œ์ž‘์ ์ด ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐœ์ฒด๋กœ ๋งŒ๋“ฆ • ํ›„๋ณด : ์‚ฌ๋žŒ, ์กฐ์ง, ์žฅ์†Œ, ์ƒํ’ˆ, ๋ฌธ์„œ, ์‚ฌ๊ฑด, ๊ฐœ๋…, ๊ธฐ์ˆ , ํ”„๋กœ์ ํŠธ ๋“ฑ • ๋ช…๋ช… ๊ทœ์น™ : Pascal(ex. Person, Company, Product) • ๋™์˜์–ด : ํ•˜๋‚˜์˜ Label๋กœ ํ†ตํ•ฉ(ex. ๊ธฐ์—…/ํšŒ์‚ฌ/์—…์ฒด → Company) • ๊ฐ ๋…ธ๋“œ๋Š” ์ตœ์†Œ ํ•˜๋‚˜์˜ ์‹๋ณ„ ์†์„ฑ(n..

STUDY/LLM 2026.07.12

[LLM] Neo4jGraph์™€ Cypher ์ฟผ๋ฆฌ - 2

1. ํ™˜๊ฒฝ ์„ค์ • ๋ฐ DB ์—ฐ๊ฒฐfrom langchain_neo4j import Neo4jGraphgraph = Neo4jGraph()graph.query("RETURN 'hello'") • .env์—์„œ NEO4J_URI, NEO4J_USERNAME, NEO4J_PASSWORD, NEO4J_DATABASE ๋กœ๋“œ• reset_database() ํ—ฌํผ ํ•จ์ˆ˜๋กœ DB ์ดˆ๊ธฐํ™”(๋ชจ๋“  ๋…ธ๋“œ/๊ด€๊ณ„/์ œ์•ฝ์กฐ๊ฑด/์ธ๋ฑ์Šค ์‚ญ์ œ) ๋”๋ณด๊ธฐ2. ๋ฐ์ดํ„ฐ ๋ชจ๋ธ : ์†Œ์…œ ๋„คํŠธ์›Œํฌ ๋…ธ๋“œ ๋ ˆ์ด๋ธ”Property์„ค๋ช…Personname, age, gender์‚ฌ์šฉ์žInterestname๊ด€์‹ฌ์‚ฌ(์˜ํ™”, ์Œ์•…, ์Šคํฌ์ธ , ์—ฌํ–‰ ๋“ฑ)Locationname์žฅ์†ŒCityname, population๋„์‹œ ๊ด€๊ณ„ ์œ ํ˜•๋ฐฉํ–ฅProperty์„ค๋ช…KNOWSPerson → P..

STUDY/LLM 2026.07.09

[LLM] Neo4jGraph์™€ Cypher ์ฟผ๋ฆฌ

1. Neo4jGraph : Neo4j Python ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ฐ์‹ผ ๋ž˜ํผ(Wrapper) ํด๋ž˜์Šค• ์—ญํ•  - Cypher ์ฟผ๋ฆฌ ์‹คํ–‰ : ์ฝ๊ธฐ/์“ฐ๊ธฐ ์ฟผ๋ฆฌ ์‹คํ–‰, ๊ฒฐ๊ณผ๋ฅผ list[dict]๋กœ ๋ฐ˜ํ™˜ - ๊ทธ๋ž˜ํ”„ ์Šคํ‚ค๋งˆ ์ž๋™ ์กฐํšŒ : ๋…ธ๋“œ ๋ ˆ์ด๋ธ”·๊ด€๊ณ„ ํƒ€์ž…·์†์„ฑ ์ •๋ณด ์ž๋™์œผ๋กœ ์ฝ์–ด schema ์†์„ฑ์— ์ €์žฅ - GraphRAG ํŒŒ์ดํ”„๋ผ์ธ ์—ฐ๊ณ„ : GraphCypherQAChain, LLMGraphTransformer ๋“ฑ๊ณผ ๊ฒฐํ•ฉํ•ด ์ž์—ฐ์–ด ๊ธฐ๋ฐ˜ ๊ทธ๋ž˜ํ”„ ์งˆ์˜์‘๋‹ต ๊ตฌ์„ฑ • ๊ฐ์ฒด ์ƒ์„ฑ ํŒŒ๋ผ๋ฏธํ„ฐ - ํ™˜๊ฒฝ๋ณ€์ˆ˜(.env)์— ์—ฐ๊ฒฐ ์ •๋ณด ์ €์žฅํ•ด๋‘๋ฉด ํŒŒ๋ผ๋ฏธํ„ฐ ์—†์ด ๋ฐ”๋กœ ์ƒ์„ฑ ๊ฐ€๋ŠฅํŒŒ๋ผ๋ฏธํ„ฐํƒ€์ž…๊ธฐ๋ณธ๊ฐ’์„ค๋ช…urlstr | NoneNoneNeo4j ์„œ๋ฒ„ URL(ํ™˜๊ฒฝ๋ณ€์ˆ˜ NEO4J_URI ๋Œ€์ฒด ๊ฐ€๋Šฅ)usernamestr | NoneNone์ธ์ฆ ์‚ฌ..

STUDY/LLM 2026.07.07

[LLM] RAG - evaluation

1. RAG ํ‰๊ฐ€ ๊ฐœ์š” : ์‹œ์Šคํ…œ์ด ์ž…๋ ฅ์— ๋Œ€ํ•ด ์–ผ๋งˆ๋‚˜ ์ž˜ ๊ฒ€์ƒ‰ํ•˜๊ณ , ๊ทธ ์ •๋ณด๋กœ ์ •ํ™•ํ•œ ์‘๋‹ต์„ ์ƒ์„ฑํ•˜๋Š”์ง€ ์ธก์ •ํ•˜๋Š” ๊ณผ์ •• ํ‰๊ฐ€ ์š”์†Œ - ๊ฒ€์ƒ‰ ๋‹จ๊ณ„ ํ‰๊ฐ€ : ์งˆ๋ฌธ์— ๋Œ€ํ•ด ๊ฒ€์ƒ‰๋œ ๋ฌธ์„œ(context)์˜ ๊ด€๋ จ์„ฑ·์ •ํ™•์„ฑ ํ‰๊ฐ€ - ์ƒ์„ฑ ๋‹จ๊ณ„ ํ‰๊ฐ€ : ๊ฒ€์ƒ‰ ์ •๋ณด ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ๋œ ์‘๋‹ต์˜ ํ’ˆ์งˆ·์ •ํ™•์„ฑ ํ‰๊ฐ€ • ํ‰๊ฐ€ ๋ฐฉ๋ฒ•๊ธฐ์ค€์ข…๋ฅ˜์„ค๋ช…๋ฐ์ดํ„ฐ ์ถœ์ฒ˜์˜คํ”„๋ผ์ธ๋ฏธ๋ฆฌ ์ค€๋น„๋œ ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ ์„ฑ๋Šฅ ์ธก์ •์˜จ๋ผ์ธ์‹ค์ œ ์‚ฌ์šฉ์ž ํŠธ๋ž˜ํ”ฝ·ํ”ผ๋“œ๋ฐฑ ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ์„ฑ๋Šฅ ํ‰๊ฐ€์ธก์ • ๋ฐฉ์‹์ •๋Ÿ‰์ ์ž๋™ํ™”๋œ ์ง€ํ‘œ๋กœ ํ…์ŠคํŠธ ํ’ˆ์งˆ ํ‰๊ฐ€์ •์„ฑ์ ์ „๋ฌธ๊ฐ€/์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ฃผ๊ด€์  ํ‰๊ฐ€ 2. RAGAS ํ”„๋ ˆ์ž„์›Œํฌ์™€ 4๋Œ€ ์ง€ํ‘œ• RAGAS : RAG ํŒŒ์ดํ”„๋ผ์ธ์„ ์ •๋Ÿ‰์ ์œผ๋กœ ํ‰๊ฐ€ํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ 2-1. ์ƒ์„ฑ(Generation) ํ‰๊ฐ€(LLM ๋‹ต๋ณ€์— ๋Œ€ํ•œ ํ‰๊ฐ€)โ‘  Faithfulnes..

STUDY/LLM 2026.07.06

[LLM] Advanced RAG

1. Advanced RAG : DB ๊ตฌ์ถ•/๊ฒ€์ƒ‰ ์ „/๊ฒ€์ƒ‰ ํ›„/์ƒ์„ฑ ๋‹จ๊ณ„ ๊ณ ๋„ํ™”ํ•˜๋Š” ์„ค๊ณ„ ํŒจํ„ด • ๊ฒ€์ƒ‰ ํ’ˆ์งˆ ํ–ฅ์ƒ : ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰(BM25+๋ฒกํ„ฐ), ๋ฉ€ํ‹ฐ์ฟผ๋ฆฌ/์ฟผ๋ฆฌ ์žฌ์ž‘์„ฑ, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง, ๋ฆฌ๋žญํ‚น • Chunking/์ธ๋ฑ์‹ฑ ์ „๋žต : ๊ตฌ์กฐ ๊ธฐ๋ฐ˜ ๋ถ„ํ• (ํ—ค๋”/์„น์…˜/ํ‘œ), ๊ณ„์ธตํ˜• ์ธ๋ฑ์Šค(์š”์•ฝ→์„น์…˜→chunk), ์œˆ๋„์šฐ ํ™•์žฅ • ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ •์ œ/์กฐ๋ฆฝ : ์ค‘๋ณต·๋…ธ์ด์ฆˆ ์ œ๊ฑฐ, ์งˆ๋ฌธ ๊ด€์  ์žฌ๊ตฌ์„ฑ • ์ƒ์„ฑ ๋‹จ๊ณ„ ๊ฐ€๋“œ๋ ˆ์ผ : ๊ทผ๊ฑฐ ๊ธฐ๋ฐ˜ ๋‹ต๋ณ€ ๊ฐ•์ œ, ์ธ์šฉ/๊ทผ๊ฑฐ ํ‘œ์‹œ, ์ž๊ธฐ๊ฒ€์ฆ, ๋ถˆํ™•์‹ค์„ฑ ์ฒ˜๋ฆฌ(์ถ”๊ฐ€ ์งˆ๋ฌธ ์œ ๋„) 2. Rerank(์žฌ์ˆœ์œ„ํ™”) : 1์ฐจ๋กœ ๋น ๋ฅธ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ํ›„, ๋” ์ •๋ฐ€ํ•œ ๋ชจ๋ธ๋กœ ์งˆ๋ฌธ-๋ฌธ์„œ ๊ด€๋ จ์„ฑ ์žฌํ‰๊ฐ€ํ•ด ์ˆœ์„œ ์žฌ์กฐ์ •(RAG ์„ฑ๋Šฅ ์ค‘์š”๋„ : ๊ด€๋ จ ์ •๋ณด ์กด์žฌ ์œ ๋ฌด • ๋ฐฉ์‹ - Cross-encoder ๊ธฐ๋ฐ˜ : ..

STUDY/LLM 2026.07.05

[LLM] RAG - Retriever

1. Retriever : ๋น„์ •ํ˜• ์งˆ์˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ Vector store ๋“ฑ์—์„œ ๊ด€๋ จ ๋‚ด์šฉ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค - RAG ๊ธฐ๋ฐ˜ - ๋ฒกํ„ฐ์Šคํ† ์–ด·๊ทธ๋ž˜ํ”„DB·๊ด€๊ณ„ํ˜•DB ๋“ฑ ๋‹ค์–‘ํ•œ ๊ฒ€์ƒ‰ ์‹œ์Šคํ…œ์„ ํ†ต์ผ๋œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋‹ค๋ฃธ - ๋ฌธ์ž์—ด ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๊ด€๋ จ ๋ฌธ์„œ ๋ฆฌ์ŠคํŠธ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ VectorStoreRetriever์—ญํ• ๋ฒกํ„ฐ ์ €์žฅ·์‚ญ์ œ·์ˆ˜์ •·์ธ๋ฑ์‹ฑ·์œ ์‚ฌ๋„ ๊ฒ€์ƒ‰ ์ง์ ‘ ์ˆ˜ํ–‰(์‹ค์ œ DB์™€ ์—ฐ๊ฒฐ)"๊ฒ€์ƒ‰์„ ์–ด๋–ป๊ฒŒ ํ• ์ง€" ์ „๋žต๋งŒ ์ •์˜(k, ํ•„ํ„ฐ, ํ•˜์ด๋ธŒ๋ฆฌ๋“œ, ์žฌ๋žญํ‚น ๋“ฑ)ํŠน์ง•๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ + ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ํฌํ•จ๊ฒ€์ƒ‰ ์š”์ฒญ๋งŒ ํ•˜๊ณ  ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜Runnable)์ด๋ผ LCEL ์ฒด์ธ์— ๋ฐ”๋กœ ํฌํ•จ ๊ฐ€๋Šฅ 2. Retriever ํ™•์žฅ ์ „๋žต โ‘  VectorStore Retriever : ์ž„๋ฒ ๋”ฉ ๊ธฐ๋ฐ˜ ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„ ๊ฒ€์ƒ‰. ๊ฐ€์žฅ ๊ธฐ๋ณธ, ๋น ๋ฅด๊ณ  ๋‹จ..

STUDY/LLM 2026.07.04

[LLM] Qdrant - langchain

Qdrant ์„ธ ๊ฐ€์ง€ ๊ฒ€์ƒ‰ ๋ฐฉ์‹1. Dense Vector Search(์˜๋ฏธ ๊ธฐ๋ฐ˜) : ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ์ด ๋ฌธ์žฅ ์ „์ฒด ์˜๋ฏธ ์••์ถ•ํ•œ ๊ณ ์ฐจ์› ๋ฒกํ„ฐ ์ƒ์„ฑ, ์ฟผ๋ฆฌ ๋ฒกํ„ฐ&๋ฌธ์„œ ๋ฒกํ„ฐ ๊ฐ„ ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„ ์ˆœ์œ„ ๋งค๊น€ - ๊ธฐ๋ณธ ๋ฐฉ์‹(RetrievalMode.DENSE) - ์ •ํ™•ํ•œ ํ‚ค์›Œ๋“œ ์—†์–ด๋„ ์˜๋ฏธ์ ์œผ๋กœ ์œ ์‚ฌํ•œ ๋ฌธ์„œ ์ฐพ์•„๋ƒ„ - ์„ฑ๋Šฅ ๋ถ€์กฑํ•  ๊ฒฝ์šฐ Sparse ์ถ”๊ฐ€ํ•ด Hybrid๋กœ ์ „ํ™˜ 2. Sparse Vector Search(ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜, BM25) : ๋ฌธ์„œ๋ฅผ "์–ด๋–ค ๋‹จ์–ด๊ฐ€ ๋ช‡ ๋ฒˆ ๋“ฑ์žฅํ–ˆ๋Š”๊ฐ€"๋กœ ํ‘œํ˜„ํ•˜๋Š” ํฌ์†Œ ๋ฒกํ„ฐ(Sparse vector) ๋ฐฉ์‹ - ๋Œ€๋ถ€๋ถ„์˜ ์ฐจ์› ๊ฐ’์ด 0, ์‹ค์ œ ๋“ฑ์žฅํ•œ ๋‹จ์–ด ์œ„์น˜๋งŒ ๊ฐ’์„ ๊ฐ€์ง - BM ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์„ธ ๊ฐ€์ง€ ์š”์†Œ ์กฐํ•ฉํ•ด ์ ์ˆ˜ ๊ณ„์‚ฐ • TF(๋‹จ์–ด ์ถœํ˜„ ๋นˆ๋„) : ๋ฌธ์„œ์—์„œ ๊ฒ€์ƒ‰์–ด๊ฐ€ ์ž์ฃผ ๋“ฑ์žฅํ• ์ˆ˜..

STUDY/LLM 2026.07.03