๐ ๅฐ็ซฏ AI ๆไปถๅฉๆ้ฒ้:RAG ๅ็็ญ็ฅ、Top-K ่ชฟๆ ก่ๅผ็จไพๆบๆ ผๅผๆไฝณๅฏฆๅ
ๅพๅคไบบๅจๆญๅปบๅฐ็ซฏ AI(ไพๅฆ Ollama + ๅ้กๆไปถๅฉๆ)ๅพ,ๆๆ่ณๆ้ฝๆพ้ฒๅปไบ,ๅ็ญๅปๅธธๅบ็พๅ ฉ็จฎ็ๆณ: ๆไธๅฐ้้ป ๆ ๆๅฐไธ็ธๅนฒ็ๆฎต่ฝ,ๆๅพๅฐฑ่ฎๆ「็่ตทไพๅพๅๆๅ็ญ,ไฝๅ ถๅฏฆไธๅฏ้ 」。
้้ๅธธไธๆฏๆจกๅไธๅค ๅผท,่ๆฏ RAG(ๆชข็ดขๅขๅผท็ๆ)ๆต็จ่ฃกๆ้้ต็ไธๅๅฐๆนๆฒ่ชฟๅฅฝ: ๅ็(Chunking)、ๆชข็ดขๅๆธ(Top-K / ้พๅผ)、ไปฅๅ ๅผ็จไพๆบ(Citations)。 ๆฌ็ฏไปฅ「่ฝ็ถญ้、ๅฏ้ฉ่ญ、ๅฏไธ็ท」็่งๅบฆ,ๆด็ไธๅฅไฝ ๅฏไปฅ็ดๆฅๅฅ็จ็ๆไฝณๅฏฆๅ。
๐ ็ฎ้
- 1) ็ฎๆจ่้ฉ็จๅ ดๆฏ
- 2) RAG ็ๆ ธๅฟๆต็จ:ไฝ ๅฐๅบๅจๅชๅๅชไธๆฎต?
- 3) ๅ็็ญ็ฅ:็บไป้บผๅฎๆฑบๅฎไบ『ๆชข็ดขๆบไธๆบ』
- 4) ๅ็ๅฏฆๆฐ้ ๆน:ไพๆไปถๅๆ ้ธ Chunk Size
- 5) Overlap ๆ้บผ่จญๆไธๆๆทไธไธๆ?
- 6) Top-K ่ Similarity Threshold ็่ชฟๆ กๆนๆณ
- 7) Context Window ้ ็ฎ:ๅฅ่ฎ้่จๅก็ๆจกๅ
- 8) ๅผ็จไพๆบ(Citations):ๅฏ่ฟฝๆบฏไธๆฏๅ ๅ่จป่ ณ่ๅทฒ
- 9) ๅฐ็ซฏ RAG ๅธธ่ฆๅ่ๅฐ็ญ
- 10) ไธ็ทๅ็ RAG ๅชๅๆชขๆฅๆธ ๅฎ
- FAQ
- ๐ ๅปถไผธ้ฑ่ฎ
1) ๐ ็ฎๆจ่้ฉ็จๅ ดๆฏ
- ่ฎๆชข็ดขๆๅพๆบ:ๅ็็ญ็ฅๆญฃ็ขบ,ๅ้็ธไผผๅบฆๆๆ「ๅฐ็ฆ」。
- ่ฎๅ่ฆ็ฉฉไธๅฏ้ฉ่ญ:Top-K/้พๅผ่ชฟๅฅฝ,้่จไธๆๆ็ญๆกๅธถๆญช。
- ่ฎ็ตๆๅฏ่ฟฝๆบฏ:ๅผ็จไพๆบ่ฆ่ฝๅๅฐ「ๅชไปฝๆไปถ、ๅชๅ็ซ ็ฏ、ๅชไธ้ ๆๅชๅๆฎต่ฝ」。
- ้ฉๅ:ไผๆฅญๅ ง้จ็ฅ่ญๅบซ、ๅไบบๆ่ก็ญ่จๅฐ็ซฏ AI、ๆณๅ/้ซ็/็จฝๆ ธ็ญ้่ฆๅฏ่ฟฝๆบฏๅ็ญ็ๅ ดๆฏ。
2) ๐งฉ RAG ็ๆ ธๅฟๆต็จ:ไฝ ๅฐๅบๅจๅชๅๅชไธๆฎต?
ๅ ๆๆต็จ่ฌๆธ ๆฅ,ๆ็ฅ้่ฆๆนๅช่ฃก。RAG ๅฏไปฅๆๆๅๆฎต,ๆฏๆฎตๅบๅ้ก็็ไธไธๆจฃ:
[ๆไปถ] → (ๆฝๅ/ๆธ
ๆด) → (ๅ็ Chunking + Metadata)
→ (Embedding ๅฏซๅ
ฅๅ้ๅบซ)
[ๆๅ] → (Embedding ๆฅ่ฉข) → (Retrieval: Top-K / Threshold / ๆๅบ)
→ (็ตๅ Context) → (LLM ็ๆ + ๅผ็จ่ผธๅบ)
- ๆฝๅ/ๆธ ๆดๅบๅ้ก:PDF ่กจๆ ผ็ ด็ข、ๆฎต่ฝ้ ๅบไบ,ๅพ้ขๅๆ้บผ่ชฟ้ฝๆไธๅไพ。
- ๅ็ๅบๅ้ก:ๆชข็ดขๅฝไธญ็ไผผ็ธ้,ไฝๅ งๅฎนไธๅฎๆด,ๅฎนๆ「ๆๅฐๅๅฅ」ๆ「ๆผๆๅฎ็พฉ」。
- Retrievalๅบๅ้ก:Top-K ๅคชๅคงๅก้่จ、ๅคชๅฐๆผ่ณๆ;Threshold ๅคช้ซๆไธๅฐ、ๅคชไฝๆ้ฏ。
- ๅผ็จๅบๅ้ก:็ญๆก็ไผผๆญฃ็ขบ,ไฝๆฒ่พฆๆณ้ฉ่ญ,ไฝฟ็จ่ ไฟกไปปๅบฆๆไธ่ทฏๆ。
3) ๐ง ๅ็็ญ็ฅ:็บไป้บผๅฎๆฑบๅฎไบ『ๆชข็ดขๆบไธๆบ』
ๅ้ๆชข็ดขๆ็ๆฏ「่ชๆ็ธไผผๅบฆ」,่ไธๆฏ「ไฝ ไปฅ็บ็้้ตๅญ」。ๅฆๆไธๆฎตๅคช้ท,ๅ้ๆ่ฎๅพๆจก็ณ;ๅฆๆๅคช็ญ,ๅๆๅคฑๅปไธไธๆ。 ๆไปฅๅ็็็ฎๆจไธๆฏ「ๅๅพๅค」,่ๆฏ่ฎๆฏๅ chunk ๆ็บๅฏ็จ็ซ่ขซ็่งฃ็ๆๅฐ็ฅ่ญๅฎไฝ。
✅ ๅปบ่ญฐๅชๅ ๆก็จ:็ตๆงๅชๅ ๅๅ(ๆจ้ก/ๆฎต่ฝ/ๆธ ๅฎ)
- ๅ ๆ็ตๆงๅ:ๆจ้ก → ๅฐ็ฏ → ๆฎต่ฝ → ๆธ ๅฎ้ (ๆฏๅบๅฎๅญๆธ็กฌๅ็ฉฉๅฎๅพๅค)。
- ๅ็จๅคงๅฐ่ฃ้ฝ:่ถ ้ทๆฎต่ฝๆ็จๅญๆธ/ๅญๅ ่ฃๅ。
- Metadata ่ท่ๅ:็ซ ็ฏๆจ้ก、้ ็ขผ、ๆฎต่ฝ็ดขๅผ、chunk_id ็ดๆฅๅธถไธ,ๅพ้ขๅผ็จๆๅๅพ่ตทไพ。
4) ๐งช ๅ็ๅฏฆๆฐ้ ๆน:ไพๆไปถๅๆ ้ธ Chunk Size
ๆฒๆไธๅ Chunk Size ๅฏไปฅ้ๅ。ๆๅๅฏฆ็ๅๆณๆฏ:ๅ ๆๆไปถๅๆ ๅ็พค,็ตฆ「่ตทๅงๅผ」,ๅ็จ้กๅบซๅป้ฉ่ญ่ๅพฎ่ชฟ。
| ๆไปถๅๆ | ๅปบ่ญฐ Chunk Size(่ตทๅงๅผ) | Overlap(่ตทๅงๅผ) | ๅๅ |
|---|---|---|---|
| ๆ่กๆๅญธ/ๆไฝๆๅ(ๆฎต่ฝๆธ ๆฅ) | 600 ~ 900 | 80 ~ 160 | ้่ฆไฟ็「ๆญฅ้ฉๅๅพ」่ๆณจๆไบ้ |
| ่ฆๆ ผๆธ/ๅ่ฉๅฎ็พฉๅฏ้ | 400 ~ 700 | 120 ~ 200 | ๅฎ็พฉ + ๆขไปถๅธธ้ปๅจไธ่ตท,Overlap ่ฆๆดไฟๅฎ |
| FAQ/็ญๆฎต่ฝๅ็ญ | 250 ~ 450 | 40 ~ 80 | ไธๅไธ็ญๆฌ่บซๅฐฑ็ญ,ๅๅคชๅคงๅ่ๆทท้ |
| ็จๅผ็ขผ/่จญๅฎๆช | 200 ~ 400(ไปฅ่ก็บๅฎไฝๆดไฝณ) | 20 ~ 60 | ไปฅๅฝๅผ/ๅๅกๅๆฏๅญๆธๅๅฏ้ |
| PDF ่กจๆ ผ็บไธป | ๅ ่ฝ Markdown/็ตๆงๅๅพๅๅ | ่ฆๆฌไฝ่ๅฎ | ๆฝๅ่ฅ็ ด็ข,ๅ็ๅๅฎ็พไนๆไธๅไพ |
ๅฆๆไฝ ๅชๆณ่ฆไธๅ「ๅ ่ฝ็จ」็่ตทๆๅผ:Chunk Size 700、Overlap 140,ๅ็จ Top-K/Threshold ๅๅพฎ่ชฟ,้ๅธธ่ฝๅ ๆ「่ก่ชชๅ ซ้」ๅฃไธไพ。
5) ๐ Overlap ๆ้บผ่จญๆไธๆๆทไธไธๆ?
Overlap ็็ฎ็ไธๆฏ็ๆฐด,่ๆฏ้ฟๅ 「ๅฎ็พฉๅๅฅฝๅจไธไธๆฎต、่งฃ้ๅๅฅฝๅจไธไธๆฎต」ๆ,ๆชข็ดขๅชๆฟๅฐๅๅฅ่ณ่จ。 ๆๅธธ่ฆ็ๅปบ่ญฐๆฏ Overlap = Chunk Size ็ 10%~20%,ไฝไฝ ๅฏไปฅ็จไธๅๆด็ด่ฆบ็ๅคๆท:
- ๅฆๆไฝ ็ chunk ๅธธๅซ「่ก่ช + ๅฎ็พฉ + ๆขไปถ」:Overlap ๅๅคง(15%~25%)。
- ๅฆๆไฝ ็ chunk ๅค็บ「็ญๅ็ญ/ๅฐๆฎต่ฝ」:Overlap ๅๅฐ(5%~15%)。
CHUNK_SIZE = 700
CHUNK_OVERLAP = 140 # ็ด 20%
6) ๐ Top-K ่ Similarity Threshold ็่ชฟๆ กๆนๆณ
้ๅ ฉๅๅๆธๆฑบๅฎ「ๆจกๅๆ็ๅฐๅชไบ่ณๆ」。็ญ็ฅๆฏ:ๅ ๆๅ็ๅบๅฎ,ๅ็จไธ็ตๅบๅฎ้กๅบซๅ A/B ๆธฌ่ฉฆ。
6.1 Top-K(ๆๅไพๅนพๆฎต)
- K=3~5:ไธ่ฌๅ็ญๆๅธธ็จ,้่จๅฐ,็ต่ซๆด่็ฆ。
- K=6~10:ๆด็/ๆฏ่ผ/ๅฝๆดๅๅ้ก,่ๆฏๆดๅฎๆด,ไฝๆดๅฎนๆๅกๅ ฅไธ็ธๅนฒๆฎต่ฝ。
6.2 Similarity Threshold(็ธไผผๅบฆ้พๅผ)
็จไพๆ「็ไผผ็ธ้ไฝๅ ถๅฏฆๆฏ้่จ」ๆๆ。ๅธธ่ฆ่ตทๆๅผ:
- ๅ ๅพ 0.70 ้ๅง
- ๆไธๅฐ่ณๆๅฐฑ้ๅฐ 0.65
- ้่จๅคชๅคๅฐฑๅๅฐ 0.75
6.3 ๅปบ่ญฐ็่ชฟๆ ก้ ๅบ(ๆ็ๆ้)
- ๅ ่ชฟ Top-K:3 → 5 → 8(็ๆผๆ vs ้่จ)
- ๅ่ชฟ Threshold:0.75 → 0.70 → 0.65(็ๆไธๅฐ vs ไบๆ)
7) ๐งพ Context Window ้ ็ฎ:ๅฅ่ฎ้่จๅก็ๆจกๅ
ๅพๅคไบบ Top-K ้ๅพๅคง,็ตๆไธๆฏๆดๆบ,่ๆฏๆดไบ。ๅๅ ๅพ็ฐกๅฎ:Context Window ๆไธ้,ไฝ ๅก้ฒๅป็ๆฏไธๆฎต้ฝๅจ่ทๆญฃ็ขบ่ณ่จๆถไฝ็ฝฎ。
7.1 ไธๅๅฅฝ็จ็้ ็ฎๅ้
- 20%:็ณป็ตฑๆไปค/ๅ็ญๆ ผๅผ/ๅผ็จ่ฆๅ(ไธๅฏ็)
- 70%:ๆชข็ดขๅไพ็ chunks(ไธป่)
- 10%:ไฝฟ็จ่ ๅ้ก、้กๅค้ๅถๆขไปถ
7.2 ๅฏฆๅๆๅทง:ๅ 「ๆๅบ」ๅ「ๆชๆท」
- ๅ ไพ็ธไผผๅบฆๆๅบ(ๆๅ ไธ rerank)
- ๅไพ token ้ ็ฎ้ๆฎตๅ ๅ ฅ,่ถ ้ๅฐฑๅๆญข
- ๅฟ ่ฆๆๆ「็ฌฌไบๆขฏ้」่ณๆๆพๅฐไธไธ่ผช(ๅค่ผชๆชข็ดข)
8) ๐ ๅผ็จไพๆบ(Citations):ๅฏ่ฟฝๆบฏไธๆฏๅ ๅ่จป่ ณ่ๅทฒ
「ๅผ็จ」็ๆญฃ็ๅนๅผๆฏ:่ฎไฝฟ็จ่ ่ฝๅ้ ญๆ ธๅฐ,ไธฆ่ฎไฝ ่ชๅทฑ่ฝๆ้ฏ。่ฆๅๅฐ้ไปถไบ,metadata ้่ฆ่ฆๆ ผๅ。
8.1 ๅปบ่ญฐ็ metadata(่ณๅฐ่ฆๆ)
doc_id:ๆไปถๅฏไธ ID(ไธ่ฆๅช้ ๆชๅ)file_name:ๆชๅๆ้กฏ็คบๅsection_title:็ซ ็ฏๆจ้ก(้ๅธธ้้ต)page_number:PDF ๅฏ็จ(ๆฒๆๅฐฑ็จๆฎต่ฝ็ดขๅผ)chunk_id:ๅ็ๅพ็ๅฏไธ ID(ไพ:doc_id + ๅบ่)offset:ๅญๅ ๅ็งปๆๆฎต่ฝ็ดขๅผ(ๆนไพฟ็ฒพๆบๅฎไฝ)source_url:ๅฏ้ป้็ไพๆบ(ๅ ง็ถฒไน่ก)
8.2 ๆจ่ฆ็ๆ็คบ่ฉๆจกๆฟ(ๅฏ็ดๆฅๅฅ็จ)
ไฝ ๆฏๅด่ฌน็ๆ่กๆไปถๅฉๆ,ๅช่ฝไพๆ【ๅ่่ณๆ】ๅ็ญ。
่ฅ【ๅ่่ณๆ】ๆชๅ
ๅซ็ญๆก,่ซๅ่ฆ「่ณๆไธ่ถณ」,ไธฆๅๅบ้่ฆ่ฃๅ
็่ณๆๆๆไปถ。
่ผธๅบๆ ผๅผ(ๅฟ
้ ้ตๅฎ):
1) ็ต่ซ(ๆขๅ)
2) ไพๆ(ๆฏ้ปๅพ้ข้ [ไพๆบ])
3) ่ฅๆๆไฝ:ๆญฅ้ฉ(ๅฟ
่ฆๆ้ [ไพๆบ])
4) ๅผ็จๆธ
ๅฎ(ๅๅบๆฏๅ [ไพๆบ] ็ๆไปถ/็ซ ็ฏ/้ ็ขผ/ID)
【ๅ้ก】
{question}
【ๅ่่ณๆ】
[ไพๆบ1] ๆไปถ:{file_name}|็ซ ็ฏ:{section_title}|้ ็ขผ:{page_number}|ID:{chunk_id}
ๅ
งๅฎน:{chunk_text}
[ไพๆบ2] ...
8.3 ๅผ็จ่ผธๅบๆ ผๅผ(่ฎ่ ๆๅฅฝๆ ธๅฐ)
- ๅฅๅฐพๅผ็จ:
...(ๅ่:[ไพๆบ1][ไพๆบ3]) - ๆฎตๅฐพๅผ็จ:ๆฎต่ฝๆๅพ็ตฑไธๅ:
ๅผ็จ:[ไพๆบ2][ไพๆบ4]
9) ⚠️ ๅฐ็ซฏ RAG ๅธธ่ฆๅ่ๅฐ็ญ
9.1 PDF ่กจๆ ผๆฝไธไนพๆทจ,็ญๆกๆฐธ้ ๆชๆช็
่กจๆ ผ่ขซๆๆ็ข็ๆๅญๆ,ๅ้ๆชข็ดขๅฎนๆๆๅฐ「ๅๅ่ณๆ」。
ๅฐ็ญ: ๅ
ๆ่กจๆ ผ่ฝๆ Markdown(ไฟ็ๆฌไฝๅ/ๅฎไฝ),ๆ่ฝๆ็ตๆงๅ JSON,ๅ้ฒ่กๅ็่ๅฏซๅ
ฅ。
9.2 ไฝ ไปฅ็บๆฏ Top-K ๅ้ก,ๅ ถๅฏฆๆฏ「ๅ็ๅคช็ฒ」
็ถ chunk ๅคช้ท,ๆชข็ดขๅฝไธญๆ่ฎๅพ「็่ตทไพ็ธ้ไฝๆไธๅฐ็ญๆก」。
ๅฐ็ญ: ๅ
ๆ chunk size ้ไธ็ด(ไพๅฆ 900 → 700 → 500),ๅ้ๆฐๅปบ็ดขๅผ。
9.3 ๅ้ๅบซ่ฎๅคงๅพ่ฎๆ ข
chunks ๅฐๅ่ฌ็ดไปฅไธ,ๅปถ้ฒ้ๅธธๆ้ๅง้ฃ。
ๅฐ็ญ: ๅ่ณๆๅๅฑค(hot/warm)、ๅ namespace/collection ๅๅฒ、ๆ่ๆ
ฎๆด้ฉๅ็ๅ้ๅบซ่็ดขๅผ็ญ็ฅ。
9.4 Embedding ไธไธ่ด(ๆๅฎนๆๅฟฝ็ฅ)
ๅฏซๅ
ฅ็จ A ๆจกๅ、ๆฅ่ฉข็จ B ๆจกๅ,ๅฐฑ็ฎๆฏๅๅฎถๆไนๅฏ่ฝ่ฎ็ธไผผๅบฆๅคฑ็。
ๅฐ็ญ: ๅฏซๅ
ฅ่ๆฅ่ฉขๅผทๅถๅไธๅฅ embedding,ไธฆๆ็ๆฌๅฏซๅ
ฅ metadata。
10) ✅ ไธ็ทๅ็ RAG ๅชๅๆชขๆฅๆธ ๅฎ
- [ ] ๆฝๅๅพ็ๆๅญ้ ๅบๆญฃ็ขบ(PDF ไธไบ่ทณๆฎต、ไธ็ ด็ข)
- [ ] ๅ็ๆก「็ตๆงๅชๅ 」:ๆจ้ก/ๆฎต่ฝ/ๆธ ๅฎๅชๅ ๅๅ
- [ ] Overlap ไปๆผ Chunk Size ็ 10%~20%,ไธๅทฒ็จ้กๅบซ้ฉ่ญ
- [ ] Top-K ่ Threshold ไพๅบๅฎ้กๅบซๅ้ A/B ่ชฟๆ ก
- [ ] Context ้ ็ฎๆง็ฎก:ๆๅบๅพๅๅกๅ ฅ,้ฟๅ ้่จๅก็
- [ ] ๆฏๅ chunk ๆๅฎๆด metadata(็ซ ็ฏ/้ ็ขผ/chunk_id/ไพๆบ)
- [ ] ๅ่ฆๅผทๅถๅผ็จ;ๆไธๅฐๅฐฑ่ผธๅบ「่ณๆไธ่ถณ」
ไฝ ็พๅจ็ RAG ไธป่ฆๅกๅจๅชไธๆฎต?ๆฏๆฝๅ(PDF/่กจๆ ผ)、ๅ็(Chunk Size/Overlap)、้ๆฏๆชข็ดข(Top-K/Threshold)?
ไนๆญก่ฟๅไบซไฝ ็ๅๆธ(Chunk Size / Overlap / Top-K / Threshold)่ไธๅ
ฉๅ「ๆๅธธๅ็ๅ้ก」,ๅพๅฎนๆๅฐฑ่ฝๆถๆๅฐๆด็ฉฉ็่ชฟๆ กๆนๅ。
FAQ
Q1:Overlap ่จญ่ถๅคง่ถๅฎๅ จๅ?
ไธไธๅฎ。Overlap ๆๅขๅ ็ดขๅผ้่็ธไผผๆฎต่ฝ้่คๅฝไธญ,ๅคชๅคงๆ่ฎ Top-K ๆดๅฎนๆๆๅฐ「ๅไธๆฎต็ไธๅ็ๆฌ」,ๅ่ๆตช่ฒป Context ้ ็ฎ。 ไธ่ฌๅพ 10%~20% ่ตท่ทณ,ๅ็จ้กๅบซ้ฉ่ญๆ็ฉฉ。
Q2:ๆๆณ่ฆ็ญๆกๆด『ไฟๅฎ』,ๅฏงๅฏๅ็ญไธ็ฅ้
ๆ Threshold ๆ้ซ(ไพๅฆ 0.75),Top-K ้ไฝ(ไพๅฆ 3~4),ไธฆๅจๆ็คบ่ฉ่ฆๆฑ「่ณๆไธ่ถณๅฐฑ็ดๆฅ่ชชไธ่ถณ」。 ๅๆๅผทๅถๅผ็จไพๆบ,้ๆๅคงๅน ๅฃไฝๅนป่ฆบๆฉ็。
Q3:ๆๆณ่ฆ็ญๆกๆด『ๅฎๆด』,ๅฏไปฅๅๅฝๆด่ๆฏ่ผ
ๆ Top-K ๆๅฐ 6~10,ๆญ้ Context ้ ็ฎๆง็ฎก(ๆๅบๅพ้ๆฎตๅ ๅ ฅ),ๅฟ ่ฆๆๆก「ๅ ฉ้ๆฎตๆชข็ดข」:ๅ ๆชข็ดขๅพๆ่ฆ,ๅไพๆ่ฆๅ็ฌฌไบ่ผช็ฒพๆบๆชข็ดข。
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ