Skip to content

๐Ÿ“„ [๋ฌธ์„œ]RAG ์‹œ์Šคํ…œ์—์„œ FunctionGemma ์ ์šฉ ์„ค๊ณ„ ๋ณด๊ณ ์„œย #8

@Cassiiopeia

Description

@Cassiiopeia

FunctionGemma ๊ธฐ๋ฐ˜ RAG ๋ผ์šฐํŒ… ์‹œ์Šคํ…œ ์„ค๊ณ„ ๋ณด๊ณ ์„œ

1. ๊ฐœ์š”

๋ณธ ๋ฌธ์„œ๋Š” ROMI ์„œ๋น„์Šค์˜ RAG(Retrieval-Augmented Generation) ์‹œ์Šคํ…œ์—
FunctionGemma(270M) ๋ชจ๋ธ์„ ์ ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๊ฒ€์ƒ‰ ํ•„์š” ์—ฌ๋ถ€ ๋ฐ ์ฒ˜๋ฆฌ ๊ฒฝ๋กœ๋กœ ๋ถ„๊ธฐ(๋ผ์šฐํŒ…) ํ•˜๊ธฐ ์œ„ํ•œ ์„ค๊ณ„ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ๋‹ค.

ํ•ต์‹ฌ ๋ชฉํ‘œ:

  • ๋ถˆํ•„์š”ํ•œ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰(RAG) ํ˜ธ์ถœ ์ตœ์†Œํ™”
  • ์‹œ์Šคํ…œ ์š”์ฒญ / ์žก๋‹ด / ๋ชจํ˜ธํ•œ ์งˆ๋ฌธ ๋ถ„๋ฆฌ
  • ์ดˆ๊ฒฝ๋Ÿ‰ ๋ชจ๋ธ ๊ธฐ๋ฐ˜ ๋น„์šฉยท์ง€์—ฐ ์ตœ์†Œํ™”
  • RAG ์ด์ „ ๋‹จ๊ณ„ ์˜๋„ ํŒ๋‹จ ์ •ํ™•๋„ ํ–ฅ์ƒ

2. ๋ฌธ์ œ ์ •์˜

2.1 ๊ธฐ์กด RAG ๊ตฌ์กฐ์˜ ํ•œ๊ณ„

  • ๋ชจ๋“  ์ž…๋ ฅ์— ๋Œ€ํ•ด ๋ฌด์กฐ๊ฑด ๋ฒกํ„ฐ DB ๊ฒ€์ƒ‰ ์ˆ˜ํ–‰
  • ์žก๋‹ดยท๊ฐ์ • ํ‘œํ˜„ยท์ƒํƒœ ํ™•์ธ ์š”์ฒญ์—๋„ ๊ฒ€์ƒ‰ ๋น„์šฉ ๋ฐœ์ƒ
  • ์‹œ์Šคํ…œ ์•ก์…˜๊ณผ ์ง€์‹ ๊ฒ€์ƒ‰์„ ๊ตฌ๋ถ„ํ•˜์ง€ ๋ชปํ•จ
  • ๊ฒ€์ƒ‰ ๋ถˆํ•„์š” ์งˆ๋ฌธ์— ๋Œ€ํ•œ ํ™˜๊ฐ(hallucination) ๋ฐœ์ƒ ๊ฐ€๋Šฅ

3. ํ•ด๊ฒฐ ์ „๋žต

3.1 ํ•ต์‹ฌ ์•„์ด๋””์–ด

FunctionGemma๋ฅผ **๋‹ต๋ณ€ ์ƒ์„ฑ ๋ชจ๋ธ์ด ์•„๋‹Œ โ€œ์˜์‚ฌ๊ฒฐ์ •(๋ผ์šฐํŒ…) ์ „์šฉ ๋ชจ๋ธโ€**๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

FunctionGemma ํŠน์ง•:

  • 270M ์ดˆ๊ฒฝ๋Ÿ‰ ๋ชจ๋ธ
  • Function Calling ํŠนํ™”
  • ๋‹จ์ผ ํŒ๋‹จ(single-turn decision)์— ๊ฐ•์ 
  • ๋น ๋ฅธ ์‘๋‹ต ์†๋„, ๋‚ฎ์€ ๋ฆฌ์†Œ์Šค ์š”๊ตฌ

4. ์ „์ฒด ์•„ํ‚คํ…์ฒ˜

4.1 ์ฒ˜๋ฆฌ ํ๋ฆ„

[User Input]
      โ†“
[FunctionGemma Router]
      โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ route_rag     โ”‚ route_system       โ”‚ route_smalltalkโ”‚ route_clarify   โ”‚
โ”‚ (๋ฒกํ„ฐ๊ฒ€์ƒ‰)     โ”‚ (์ƒํƒœ/๋กœ๊ทธ/์•ก์…˜)   โ”‚ (์ผ์ƒ๋Œ€ํ™”)      โ”‚ (์ถ”๊ฐ€์งˆ๋ฌธ)      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
      โ†“
[๊ฐ ๋ถ„๊ธฐ๋ณ„ ์‹ค์ œ ์ฒ˜๋ฆฌ ๋กœ์ง]
      โ†“
[์ตœ์ข… ์‘๋‹ต ์ƒ์„ฑ]

5. FunctionGemma ์—ญํ•  ์ •์˜

5.1 ํ•˜์ง€ ์•Š๋Š” ์ผ

  • ์‹ค์ œ ๊ฒ€์ƒ‰ ์ˆ˜ํ–‰
  • DB ์กฐํšŒ
  • ์‹œ์Šคํ…œ ๋ช…๋ น ์‹คํ–‰
  • ์ตœ์ข… ์ž์—ฐ์–ด ๋‹ต๋ณ€ ์ƒ์„ฑ

5.2 ์ˆ˜ํ–‰ ์—ญํ• 

  • ์‚ฌ์šฉ์ž ์˜๋„ ๋ถ„๋ฅ˜
  • ์ฒ˜๋ฆฌ ๊ฒฝ๋กœ ๊ฒฐ์ •
  • JSON ๊ธฐ๋ฐ˜ ์ตœ์†Œ ์ •๋ณด ๋ฐ˜ํ™˜

6. ๋ผ์šฐํŒ… ์„ค๊ณ„

6.1 ๋ผ์šฐํŒ… ํ•จ์ˆ˜ ์ •์˜

route_rag

  • ๋‚ด๋ถ€ ๋ฌธ์„œ/์„ค์ •/์ฝ”๋“œ ๊ฒ€์ƒ‰ ํ•„์š” ์‹œ
  • ํ‚ค์›Œ๋“œ: ์–ด๋””, ์œ„์น˜, ์„ค์ •, config, ํŒŒ์ผ, ์ฝ”๋“œ

route_system

  • ์ƒํƒœ/๋กœ๊ทธ/ํฌํŠธ/ํ”„๋กœ์„ธ์Šค ๋“ฑ ๋Ÿฐํƒ€์ž„ ์งˆ์˜

route_smalltalk

  • ์ธ์‚ฌ, ๊ฐ์ • ํ‘œํ˜„, ์žก๋‹ด

route_clarify

  • ์งˆ๋ฌธ์ด ๋ชจํ˜ธํ•˜์—ฌ ์ถ”๊ฐ€ ์ •๋ณด ํ•„์š” ์‹œ

7. ๋™์ž‘ ์˜ˆ์‹œ

์‚ฌ์šฉ์ž ์ž…๋ ฅ

romi์—์„œ SSE ์ŠคํŠธ๋ฆฌ๋ฐ ์„ค์ • ์–ด๋””์— ํ–ˆ์ง€?

๋ผ์šฐํŒ… ๊ฒฐ๊ณผ

{
  "function": {
    "name": "route_rag",
    "arguments": {
      "query": "ROMI SSE streaming configuration location"
    }
  }
}

8. ๊ธฐ์ˆ ์  ๊ณ ๋ ค์‚ฌํ•ญ

8.1 CLI ์‚ฌ์šฉ ๋ถˆ๊ฐ€

  • ollama run functiongemma๋Š” Function Calling ๋ฏธ์ง€์›
  • /api/chat + tools JSON ๋ฐฉ์‹ ํ•„์ˆ˜

8.2 Windows PowerShell ์ธ์ฝ”๋”ฉ ์ด์Šˆ

  • UTF-8 ๊ฐ•์ œ ํ•„์š”
  • ๋ผ์šฐํŒ… ๋‹จ๊ณ„์—์„œ๋Š” query๋ฅผ ์ฐธ๊ณ ์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉ ๊ถŒ์žฅ

9. ์žฅ์  ์š”์•ฝ

  • ์„ฑ๋Šฅ: ๋น ๋ฅธ ์‘๋‹ต, ๊ฒ€์ƒ‰ ๋น„์šฉ ์ ˆ๊ฐ
  • ์•ˆ์ •์„ฑ: ํ™˜๊ฐ ๊ฐ์†Œ
  • ํ™•์žฅ์„ฑ: Agent ๊ตฌ์กฐ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅ

10. ๊ฒฐ๋ก 

FunctionGemma๋Š” RAG ์‹œ์Šคํ…œ์˜ ์ฒซ ๊ด€๋ฌธ(Gatekeeper)์ด๋‹ค.

โ€œFunctionGemma๋Š” ๋‹ต๋ณ€์„ ๋งŒ๋“œ๋Š” ๋ชจ๋ธ์ด ์•„๋‹ˆ๋ผ,
RAG๋ฅผ ์‚ฌ์šฉํ• ์ง€ ๋ง์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ชจ๋ธ์ด๋‹ค.โ€

๐Ÿ™‹โ€โ™‚๏ธ ๋‹ด๋‹น์ž

  • ๋ฐฑ์—”๋“œ: @Cassiiopeia
  • ํ”„๋ก ํŠธ์—”๋“œ: ์ด๋ฆ„
  • ๋””์ž์ธ: ์ด๋ฆ„

Metadata

Metadata

Assignees

Labels

๋ฌธ์„œ๋ฌธ์„œ ์ž‘์—… ๊ด€๋ จ

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions