จำแนกบันทึกส่วนตัวออกเป็น 5 หมวดหมู่โดยอัตโนมัติด้วย LLM (Ollama) - การออกแบบไปป์ไลน์กลั่นและข้อผิดพลาด

Ollama LLM RAG ChromaDB Python 自動分類 AIアシスタント

🔗 สารบัญซีรีส์: บทความนี้เป็น ฉบับการใช้งาน (3) ของซีรีส์ บันทึกการปฏิบัติงานของผู้ช่วย AI - บันทึกการปฏิบัติสำหรับการเพิ่มรหัส Copilot / Claude ในฐานะคู่หูของคุณ

สิ่งที่คุณสามารถเรียนรู้ได้จากบทความนี้

  • เมื่อใช้งาน RAG ส่วนตัว “ฉันเขียนบันทึก แต่ฉันลืมเลื่อนระดับให้เป็นบทเรียนที่ได้รับ” โครงสร้างปัญหา
  • กลไกของ การจำแนกอัตโนมัติ 5 หมวดหมู่ ด้วย LLM (เฉพาะภาษาญี่ปุ่น Ollama / Llama 3)
  • หากดำเนินการอย่างไม่ระมัดระวัง อุบัติเหตุ เช่น “ฉันขอโทษ” จะถูกจัดว่าเป็นบทเรียน จะเกิดขึ้น และจะรับมืออย่างไร
  • วิธีใช้โหมด JSON และการออกแบบทางเลือกหากยังคงล้มเหลว
  • ป้องกันไฟล์สถานะการประมวลผลซ้ำ + การตรวจจับส่วนต่างใน mtime
  • ผลกระทบและข้อควรทราบหลังจากใช้งานครบ 1 เดือน

กลุ่มเป้าหมาย

  • ผู้ที่ใช้งาน RAG ส่วนบุคคลและกำลังประสบกับ “บันทึกที่ยังไม่เสร็จ” เพิ่มขึ้น
  • ผู้ที่ต้องการรวม LLM ท้องถิ่น (Ollama) เข้ากับ การประมวลผลเป็นชุดในทางปฏิบัติ
  • ผู้ที่ต้องการทราบความรู้วิธีการ ลดการจัดประเภทที่ไม่ถูกต้องโดยไม่คาดคิด ในงานการจัดประเภท LLM

สภาพแวดล้อมการทำงาน

รายการเวอร์ชั่น
หลาม3.13 (venv)
โอลามาเซิร์ฟเวอร์เริ่มต้นแล้ว (localhost:11434)
LLM สำหรับการจำแนกประเภทmicroai/suzume-llama3 (ลามะ 3 เฉพาะภาษาญี่ปุ่น)
การฝังnomic-embed-text (สำหรับอินพุต ChromaDB)
ChromaDBโหมดคงอยู่

1. บทนำ — ปัญหา “เขียนบันทึกต่อไป”

เมื่อใช้งาน RAG ส่วนบุคคล ขั้นตอนแรกคือการเพิ่มจำนวนอินพุต “วัสดุ” ลงใน ChromaDB ฉันใช้คำสั่ง rag note "..." เพื่อสร้างระบบที่ช่วยให้ฉันสามารถจดบันทึกสั้นๆ ได้ทันทีที่นึกถึงบางสิ่งบางอย่าง

หลังจากนั้นไม่กี่สัปดาห์ data/diary/ ก็สะสม บันทึกหลายร้อยรายการ

# 30-04-2026

## 04:09
บทเรียนที่ได้รับสำหรับ Qiita 429: ค่าของส่วนหัวการรีเซ็ตอัตราเป็นคำตอบที่ถูกต้องเท่านั้น
อย่าปฏิบัติตามสมมติฐานของ Gemini หรือ LLM (รอ 24 ชั่วโมง ฯลฯ)

## 12:30
30-04-2026 ใช้ฟังก์ชันการกลั่น my-rag-brain
ความเป็นมา: เดิมทีฉันเขียนบันทึกทั้งหมดของฉันไว้ในบันทึก (ไดอารี่/)
ปฏิบัติการด้วยตนเองเพื่อส่งเสริมเป็นบทเรียน/ความคิด/ความรู้/โปรไฟล์...## 15:51
มาตรการรับมือต่อการกลั่นกรองประเภทที่ไม่ถูกต้อง: ปัญหาจดหมายขอโทษของ AI และคู่มือการใช้งานที่ถูกจัดประเภทผิดเป็นบทเรียนจะได้รับการแก้ไขในสองขั้นตอน...

หากคุณดึง rag search "Qiita Rate-Reset" ในการค้นหาเวกเตอร์ คุณจะพบเนื้อหาของบันทึกย่อ แต่มีบางอย่างขาดหายไป.

สิ่งที่ขาดหายไปคือ การจัดหมวดหมู่ เช่น สิ่งนี้ควรถูกใช้เป็นบทเรียนเพื่อป้องกันการเกิดซ้ำ'' และ สิ่งนี้ควรบันทึกไว้เป็นแนวคิดสำหรับอนาคต” ในสถานะบันทึกย่อ ผลการค้นหาจะผสมกันเท่าๆ กัน ฉันต้องการแยกความแตกต่างระหว่าง “บทเรียนที่ฉันเขียนในขณะนั้น” และ “แนวคิดที่ฉันเขียนในขณะนั้น”

ตอนแรกฉันพยายามทำ การจัดหมวดหมู่แบบแมนนวล data/lessons/ data/ideas/ และอัปเกรดในขณะที่อ่านบันทึก

**ฉันยอมแพ้หลังจากผ่านไป 3 วัน ** อย่าลืมการทำงานแบบแมนนวลเสมอไป ฉันลืมแม้กระทั่งหลังจากที่ฉันเขียนมัน

นั่นคือสิ่งที่ฉันคิดว่า

**บางทีนี่ควรจัดเป็น LLM **

Ollama กำลังทำงานในพื้นที่ ซีรีส์ Llama 3 ดูเหมือนจะสามารถแยกแยะโน้ตภาษาญี่ปุ่นได้ อ่านบันทึกของเดือนหนึ่งพร้อมกันและจัดเรียงเป็น 5 หมวดหมู่โดยอัตโนมัติ ฉันตัดสินใจสร้างชุดงาน

บทความนี้เกี่ยวกับการนำไปใช้งานและ อุบัติเหตุที่เกิดขึ้นตามธรรมชาติเมื่อทำอย่างเลอะเทอะ


2. คำจำกัดความของ 5 หมวดหมู่

ขั้นแรก ตัดสินใจว่าคุณต้องการจัดหมวดหมู่ใด

หมวดหมู่สิ่งที่ต้องรวมตัวอย่าง
lessonกฎเฉพาะเพื่อป้องกันการเกิดซ้ำที่ควรทำเช่นนี้ในครั้งต่อไป”ส่วนหัวการรีเซ็ตอัตราเป็นคำตอบที่ถูกต้องเท่านั้น”
ideaแนวคิด/แนวความคิดที่คุณอยากจะนำไปใช้/ทำให้เป็นจริงในอนาคต“แปลง RAG ส่วนบุคคลเป็น MCP และเชื่อมต่อกับ Copilot”
knowledgeข้อกำหนดทางเทคนิค/ข้อกำหนด API/ข้อเท็จจริงเกี่ยวกับวัตถุประสงค์”nomic-embed-text มี 768 มิติ”
profileค่านิยม/ความเชื่อ/แรงจูงใจ/ความหลงใหล“จัดลำดับความสำคัญความสามารถในการอ่านของมนุษย์มากกว่าการเพิ่มประสิทธิภาพเครื่องจักร”
conclusionการตัดสินมาถึงโดยการอภิปรายและการพิจารณา”Qiita = ฉบับสรุป Astro = ฉบับสมบูรณ์”
noneไม่มีข้อใดข้างต้น (บันทึกการทำงาน, คำขอโทษ, คู่มือขั้นตอนการปฏิบัติงาน)“ขออภัย เราจะแก้ไขให้ถูกต้อง”

none ได้รับการจัดทำขึ้นอย่างเป็นอิสระเพื่อเป็นมาตรการตอบโต้สำหรับ “เหตุการณ์บทเรียนการขอโทษ” ซึ่งฉันจะเขียนเกี่ยวกับเรื่องนี้ในภายหลัง


3. การใช้งานที่ไร้เดียงสาและอุบัติเหตุทันที

ตอนแรกฉันโยนมันอย่างเลอะเทอะไปที่ LLM

prompt = f"""
Please classify the text below as lesson / idea / knowledge / profile / conclusion.

Text:
{text}

Category:
"""
response = ollama.chat(model="llama3.2:3b", messages=[...])

ตอนนี้มันใช้งานได้แล้ว ฉันทดสอบสินค้าประมาณ 30 รายการและได้รับ การจัดประเภทเช่นนั้น ฉันยินดีที่จะส่งต่อทุกอย่าง

เมื่อฉันตรวจสอบผลลัพธ์ ฉันพบจดหมายขอโทษจำนวนมากในไดเร็กทอรี **lessons/

## 22:43 [กลั่นอัตโนมัติ]

ขออภัย ระวังครั้งหน้าจะได้ไม่ทำผิดซ้ำอีก

**ข้อความต้นฉบับ (ข้อความที่ตัดตอนมา)**:
ขออภัย การดำเนินการก่อนหน้านี้ไม่ถูกต้อง

---

LLM อาจให้เหตุผล:

“อย่าทำผิดแบบเดิมอีก” “คราวหน้าฉันจะระวังให้มากขึ้น” = คำพูดที่ฟังดูเหมือนบทเรียน = บทเรียน!

แน่นอน อ่านแบบนั้น แต่นี่คือ จดหมายขอโทษ ทันทีหลังจากเกิดอุบัติเหตุ AI ไม่ใช่บทเรียนนั่นเอง บทเรียนอยู่ที่อื่นในประโยคเช่น “ส่วนหัวการรีเซ็ตอัตราเป็นคำตอบที่ถูกต้องเท่านั้น” ที่ฉันเขียนด้วยมือ

การจัดประเภทที่ไม่ถูกต้องอื่นๆ ที่พบบ่อย ได้แก่:

  • “กรุณาวางข้อมูลต่อไปนี้ตามที่อยู่ใน Gemini Ultra” → จัดเป็นแนวคิด (ตามคำแนะนำในการใช้งานจริง)
  • “ถูกต้อง” → จัดเป็นข้อสรุป (จริง ๆ แล้วตกลง)
  • ประโยคสั้นๆ เพียง 3 บรรทัด → บังคับจัดเป็นบทเรียน (จริงๆ แล้วไม่มีพื้นฐานในการตัดสิน)

พยายามบังคับข้อความที่ไร้สาระให้อยู่ในหมวดหมู่ นี่คือกับดักการจำแนกประเภท LLM หมายเลข 1


4. มาตรการตอบโต้ — บอก LLM ว่าพวกเขาสามารถเลือก “ไม่มี”

เมื่อฉันแตกปัญหามันก็เป็นแบบนี้

4.1 LLM ไม่เต็มใจที่จะเลือก “ไม่เกี่ยวข้อง”

LLM มักไม่ได้รับการฝึกอบรมให้ตัดสินข้อมูลที่ไม่ใช่ตัวเลือกว่า “ไม่เกี่ยวข้อง” มีแนวโน้มที่จะบังคับตัวเลือกเดียวออกจากตัวเลือกที่กำหนด

มาตรการรับมือ: ระบุ none เป็นตัวเลือก + เขียน “ตัวอย่างที่คุณสามารถเลือกไม่มีได้” ในข้อความแจ้ง

CLASSIFY_PROMPT = """\
โปรดอ่านรายการหมายเหตุด้านล่างและจัดไว้ในหมวดหมู่ที่เหมาะสมที่สุดหมวดหมู่และเกณฑ์การคัดเลือก:
- บทเรียน: มีกฎเฉพาะเพื่อป้องกันการเกิดซ้ำ เช่น สิ่งที่คุณควรทำในครั้งต่อไป
- แนวคิด: มีการเขียนแนวคิดหรือแนวคิดที่คุณต้องการนำไปใช้หรือตระหนักในอนาคต
- ความรู้: มีการเขียนข้อเท็จจริงเชิงวัตถุประสงค์เกี่ยวกับข้อกำหนดทางเทคนิค ข้อกำหนด API และเครื่องมือ
- โปรไฟล์: อธิบายค่านิยม ความเชื่อ แรงจูงใจ และความชอบของผู้เขียน
- บทสรุป: มีการเขียนแหล่งที่มา ฉันทามติ และการออกแบบผ่านการอภิปรายและการพิจารณา
- ไม่มี: ไม่ตรงกับข้อใดเลยข้างต้น (บันทึกการทำงาน จดหมายขอโทษ ขั้นตอนการปฏิบัติงาน การแลกเปลี่ยนการสนทนา ฯลฯ)

ตัวอย่างการเลือกไม่มี:
- คำขอโทษและข้อตกลงเช่น "ฉันขอโทษ" และ "ถูกต้อง"
- คำแนะนำ/ขั้นตอนการใช้งาน เช่น "โปรดดำเนินการดังต่อไปนี้"
- คำอธิบายประวัติการทำงานง่ายๆ (บันทึกสิ่งที่ทำ)
- แฟรกเมนต์สั้นเกินกว่าจะอ่านกฎหรือข้อมูลเชิงลึกได้

รายการหมายเหตุ:
---
{text}
---

กระบวนการคิด:
1. รายการนี้คือ "สนามกีฬา
2. พระเจ้าใช่ประเด็นคืออะไร
3. หากไม่รวม: เลือกไม่มี

เอาต์พุต (JSON เท่านั้น ไม่ต้องบล็อกโค้ดหรือข้อความเพิ่มเติม):
{{"reasoning": "หนึ่งประโยคว่าทำไมคุณถึงเลือกหมวดหมู่นั้น", "type": "lesson|idea|knowledge|profile|conclusion|none", "summary": "สรุปในประโยคเดียว (ว่างเปล่าหากไม่มี)"}}
"""

สามคะแนน:

  1. ระบุตัวอย่างการเลือก none 3 ถึง 4 ตัวอย่าง — แสดงตัวอย่างคำขอโทษ คำแนะนำ และประโยคสั้นๆ เฉพาะของ LLM
  2. อธิบายกระบวนการคิดของคุณ — ถามก่อนว่า “มีข้อมูลเชิงลึกใดบ้างที่ฉันสามารถใช้ได้ในครั้งต่อไป”
  3. reasoning รวมอยู่ใน JSON — ป้องกันการจำแนกประเภทได้ง่ายโดยให้ LLM เขียนเหตุผลในการตัดสินใจเอง

เพียงอย่างเดียวนี้สามารถลดการจำแนกประเภทที่ไม่ถูกต้องได้มากกว่า 80%

4.2 กรองล่วงหน้าก่อนส่งเข้า LLM

สำหรับรูปแบบที่ยังคงอยู่ ฉันได้เพิ่มตัวกรองล่วงหน้าในฝั่ง Python

def classify_entry(text: str) -> dict:
    stripped = text.strip()

    # フィルタ1: 短すぎる断片は問答無用で none
    if len(stripped) < 50:
        return {"type": "none", "summary": ""}# Filter 2: Typical opening pattern of apology, agreement, and procedure introduction
    apology_patterns = ("Sorry", "That's right", "As you said", "As you pointed out", "Continue as below")
    if any(stripped.startswith(p) for p in apology_patterns):
        return {"type": "none", "summary": ""}

    # Once you've reached this point, submit to LLM
    prompt = CLASSIFY_PROMPT.format(text=text[:600])
    # ...

น้อยกว่า 50 ตัวอักษรและจุดเริ่มต้นของรูปแบบคำขอโทษ เล่นก่อนติดต่อ LLM ช่วยลดต้นทุนในการโทรหา Ollama และลดแหล่งที่มาหลักของการจัดประเภทที่ไม่ถูกต้อง

4.3 ใช้โหมด JSON + regex ทางเลือก

Ollama (และโมเดลที่ใช้ Llama อยู่เบื้องหลัง) มีความแตกต่างระหว่างแต่ละบุคคลตรงที่แม้ว่าคุณจะขอให้พวกเขา “ส่งออกเฉพาะ JSON” ทันที พวกเขาจะขึ้นต้นด้วย “ใช่ ฉันเข้าใจ” หรือล้อมรอบด้วยบล็อกโค้ด

วิธีแก้ไข: บังคับใช้โหมด JSON ด้วยตัวเลือก format="json" ของ Ollama

resp = ollama.chat(
    model=LLM_MODEL,
    messages=[{"role": "user", "content": prompt}],
    options={"temperature": 0.1}, # Suppress fluctuation
    format="json", # JSON mode: Always output valid JSON
)

ถึงกระนั้นก็ตาม บางครั้งมันก็ล้มเหลว ดังนั้นฉันจะรวมทางเลือกสำรองไว้ด้วย

raw = resp["message"]["content"].strip()
try:
    result = json.loads(raw)
except json.JSONDecodeError:
    # Fallback: safety valve in case format="json" fails in rare cases
    m = re.search(r"\{[^{}]+\}", raw, re.DOTALL)
    if not m:
        return {"type": "none", "summary": ""}
    result = json.loads(m.group())

อย่าคาดหวังความสมบูรณ์แบบ. หากสมมติฐานคือสามารถล้มเหลวได้ ก็สามารถบันทึกได้ด้วยทางเลือกสำรอง ฉันรู้สึกว่านี่เป็นกฎทองเมื่อใช้ LLM ในชุดงานจริง


5. กระบวนการโปรโมต — เพิ่มลงในไฟล์หมวดหมู่ + ใส่ ChromaDB

เมื่อสรุปผลการจำแนกประเภทแล้ว ให้เพิ่มลงใน data/<カテゴリ>/YYYY-MM-DD.md ที่เกี่ยวข้อง

TYPE_DIRS = {
    "idea": DATA_DIR / "ideas",
    "lesson": DATA_DIR / "lessons",
    "knowledge": DATA_DIR / "knowledge",
    "profile": DATA_DIR / "profile",
    "conclusion": DATA_DIR / "conclusions",
}

def promote_entry(entry_type, time_str, summary, original, source_date, dry_run):
    target_dir = TYPE_DIRS.get(entry_type)
    if not target_dir:
        return # none does not create a file

    target_dir.mkdir(parents=True, exist_ok=True)
    target_file = target_dir / f"{source_date}.md"

    if not target_file.exists():
        target_file.write_text(
            f"# {source_date} {LABEL_BY_TYPE[entry_type]} (automatic extraction)\n\n",
            encoding="utf-8"
        )

    block = f"""
## {time_str} [auto-distilled]

{summary}

**Original text (excerpt)**:
{original[:400]}

---
"""
    with target_file.open("a", encoding="utf-8") as f:
        f.write(block)

    # Input to ChromaDB at the same time
    ingest_file(str(target_file), entry_type, tags=f"{source_date},auto-distilled")

แนวคิดสามประการ:1. เลื่อนระดับเป็นไฟล์แยกต่างหากจากบันทึกต้นฉบับ — ปล่อยให้บันทึกต้นฉบับไม่ถูกแตะต้อง (เพื่อให้มนุษย์สามารถตรวจสอบได้ในภายหลัง) 2. บันทึกทั้งบทสรุป + ข้อความต้นฉบับที่ตัดตอนมา — แม้ว่า LLM จะทำผิดพลาดในการสรุป แต่ก็สามารถระบุได้โดยการดูจากข้อความต้นฉบับ 3. Inject into ChromaDB พร้อมๆ กับโปรโมชั่น — ใส่ auto-distilled ในแท็กเพื่อจำกัด “จำแนกอัตโนมัติ” ให้แคบลงในภายหลัง


6. การป้องกันการประมวลผลซ้ำ — ไฟล์สถานะ + การตรวจสอบเวลา

การกลั่นเป็น กระบวนการที่หนัก โดยจะสอบถาม Ollama ครั้งละหนึ่งรายการ ดังนั้นจึงต้องใช้เวลาหลายสิบวินาทีถึงหลายนาทีสำหรับโน้ต 100 รายการ

เนื่องจากการประมวลผลไฟล์ทั้งหมดซ้ำในแต่ละครั้งจะเป็นการสิ้นเปลือง เราจึงเพิ่มกลไกในการบันทึกไฟล์ที่ประมวลผลในสถานะ

STATE_FILE = DATA_DIR / ".distill_state.json"

def load_state() -> dict:
    if STATE_FILE.exists():
        return json.loads(STATE_FILE.read_text(encoding="utf-8"))
    return {"processed": {}}

def save_state(state: dict):
    STATE_FILE.write_text(json.dumps(state, ensure_ascii=False, indent=2), encoding="utf-8")

{ファイル名: 処理時の mtime} ถูกบันทึกไว้ใน processed ครั้งถัดไปที่ดำเนินการจะถูกกำหนดดังนี้:

for md_path in diary_files:
    file_key = md_path.name
    mtime = datetime.fromtimestamp(md_path.stat().st_mtime).isoformat()

    # Processed and file not updated → Skip
    if not all_mode and file_key in processed and processed[file_key] >= mtime:
        continue

    # New or updated → Process
    ...

สิ่งสำคัญคือต้องตรวจสอบไม่เพียงแต่ชื่อไฟล์เท่านั้น แต่ยังตรวจสอบเวลาทำงานด้วย หากมีการเพิ่มรายการบันทึกใหม่ลงในไฟล์เดียวกัน mtime จะได้รับการอัปเดตและจะถูกประมวลผลใหม่

คุณยังสามารถบังคับให้ประมวลผลใหม่ทั้งหมดได้โดยใช้แฟล็ก --all:

rag distill # ยังไม่แปรรูปเท่านั้น
rag distill --all # ประมวลผลใหม่ทั้งหมด (ละเว้นสถานะ)
rag distill --dry-run # แสดงเฉพาะผลการจำแนกประเภท ห้ามบันทึก

7. ลองดู — นักวิจัยอะไรบ้าง

นี่คือความประทับใจของฉันหลังจากใช้งานมาหนึ่งเดือน

7.1 “บันทึกย่อ” เกือบหายไป

บันทึกย่อที่เคยทิ้งไว้ในขณะที่เขียนจะถูกจัดเรียงเป็นหมวดหมู่ที่มีความหมายโดยอัตโนมัติและสามารถค้นหาได้ จำนวน data/lessons/ ค่อยๆ เพิ่มขึ้น และตอนนี้สามารถค้นหาข้ามเฉพาะบทเรียนที่ได้เรียนรู้เท่านั้น

7.2 ปรับปรุงคุณภาพการค้นหา RAG

หากคุณจำกัดการค้นหาให้แคบลงโดยใช้ type=lesson ระบบจะส่งคืนเฉพาะ “กฎที่เรียนรู้จากความผิดพลาดในอดีต” เท่านั้น สิ่งนี้ใช้ได้ดีเป็นบริบทในการส่งผ่านไปยัง Copilot/Claude Code แทนที่จะค้นหารายการทั้งหมดอย่างเลอะเทอะ สามารถส่งบริบทที่แม่นยำยิ่งขึ้นไปยัง AI ได้

7.3 ตอนนี้ฉันมีช่วงเวลาที่ฉันคิดว่า “โอ้ ฉันควรจะบันทึกสิ่งนี้ไว้”

ผลข้างเคียง เมื่อฉันเขียนบันทึก ฉันเริ่มคิดว่า หากสิ่งนี้ถูกจำแนกโดยอัตโนมัติ มันจะไปที่บทเรียน'' หรือ นี่คือความรู้” การรับรู้หมวดหมู่ พัฒนาขึ้นสำหรับผู้เขียนเช่นกัน ปฏิกิริยาลูกโซ่เกิดขึ้นซึ่งทำให้คุณภาพการบันทึกดีขึ้น


8. ข้อควรทราบ/ข้อจำกัด

8.1 การตัดสิน LLM ไม่สมบูรณ์แบบ

หากคุณไม่ตรวจสอบ --dry-run บ่อยๆ บางครั้งการจำแนกประเภทแปลกๆ อาจปะปนกัน จำเป็นต้องดูที่ data/lessons/ และลบรายการ none ที่คุณคิดว่าผิดออกด้วยตนเองทุกๆ หกเดือน

8.2 หมายเหตุเดียวกันอาจจัดอยู่ในหลายหมวดหมู่

“บทเรียนรีเซ็ตอัตราของ Qiita 429” เป็นทั้งบทเรียนและความรู้ การใช้งานปัจจุบันใช้ 1 รายการและ 1 หมวดหมู่ แต่การจัดหมวดหมู่แบบหลายป้ายกำกับอาจมีความเหมาะสมมากกว่า คะแนนสำหรับการปรับปรุงในอนาคต

8.3 การเปลี่ยนโมเดล LLM จะเปลี่ยนผลลัพธ์

ฉันใช้ microai/suzume-llama3 และสังเกตเห็นว่าแนวโน้มการจัดหมวดหมู่เปลี่ยนไปเมื่อเปลี่ยนไปใช้โมเดลอื่น จำเป็นต้องมีการปรับแต่งสำหรับแต่ละรุ่น ก่อนเปลี่ยนควรตรวจสอบคุณภาพด้วยตัวอย่าง

8.4 การใช้ทรัพยากร LLM ท้องถิ่น

เนื่องจากสันนิษฐานว่า Ollama กำลังทำงานอยู่ หากคุณกำลังทำงานอย่างอื่นบนแล็ปท็อป คุณจะรู้สึกเหมือนกำลังใช้หน่วยความจำและ CPU อย่างช้าๆ หากคุณต้องการเรียกใช้งานทั้งหมดพร้อมกันเป็นชุด ก็สมเหตุสมผลที่จะเรียกใช้งานก่อนเข้านอน


9. สรุป

  • ทุกคนประสบปัญหา “ฉันเขียนบันทึก แต่ฉันไม่สามารถจัดหมวดหมู่ได้” เมื่อใช้งาน RAG ส่วนตัว สามารถแก้ไขได้ด้วย การจำแนก LLM อัตโนมัติ
  • หากการดำเนินการนั้นไร้เดียงสา เกิดอุบัติเหตุโดยที่ “ ฉันขอโทษ ” ถือเป็นบทเรียน** none หมวดหมู่ที่ชัดเจน + พร้อมท์กระบวนการคิดฝัง + ระงับด้วยตัวกรองล่วงหน้า
  • รับเอาต์พุต LLM อย่างปลอดภัยใน โหมด JSON + regex สำรอง ออกแบบโดยไม่คาดหวังความสมบูรณ์แบบและอาจเกิดความล้มเหลวได้
  • ป้องกันการประมวลผลซ้ำด้วย ไฟล์สถานะ + การตรวจสอบเวลา พื้นฐานของการจัดการแบตช์ LLM จำนวนมากอย่างชาญฉลาด
  • หลังจากใช้งานเป็นเวลาหนึ่งเดือน ทั้งคุณภาพของบันทึกและคุณภาพการค้นหาจะดีขึ้น แม้แต่จิตสำนึกของผู้เขียนก็เปลี่ยนไป ก็เป็นผลข้างเคียงที่ดี

บทความที่เกี่ยวข้อง:

บันทึกที่คุณเขียนต่อไปจะกลายเป็นบทเรียนที่จะช่วยคุณในวันพรุ่งนี้ ฉันรู้สึกว่านั่นคือมูลค่าที่แท้จริงของท่อกลั่น

ส่งข้อความได้ตามสบาย

ไม่ว่าจะเป็นการว่าจ้างงาน แนะนำโปรเจกต์ ความคิดเห็น หรือคำถาม ยินดีรับทั้งหมด ฉันหวังเป็นอย่างยิ่งว่าจะได้เชื่อมต่อกับผู้ที่มีอุดมการณ์อันสูงส่งเช่นเดียวกัน ฉันจะมุ่งมั่นท้าทายในสิ่งที่ทุ่มเททั้งชีวิตต่อไป ขอขอบคุณและฝากเนื้อฝากตัวด้วยครับ/ค่ะ