---
read_when:
    - คุณต้องการทำความเข้าใจแบ็กเอนด์ memory แบบค่าเริ่มต้น
    - คุณต้องการกำหนดค่าผู้ให้บริการ embeddings หรือการค้นหาแบบไฮบริด
summary: แบ็กเอนด์ memory แบบอิง SQLite ซึ่งเป็นค่าเริ่มต้น พร้อมการค้นหาแบบคำสำคัญ เวกเตอร์ และไฮบริด
title: Built-in Memory Engine
x-i18n:
    generated_at: "2026-04-23T05:30:26Z"
    model: gpt-5.4
    provider: openai
    source_hash: 181c40a43332315bf915ff6f395d9d5fd766c889e1a8d1aa525f9ba0198d3367
    source_path: concepts/memory-builtin.md
    workflow: 15
---

# Built-in Memory Engine

เอนจินที่มีมาในตัวคือแบ็กเอนด์ memory แบบค่าเริ่มต้น โดยจะเก็บดัชนี memory ของคุณไว้ใน
ฐานข้อมูล SQLite แยกตามเอเจนต์ และไม่ต้องมี dependency เพิ่มเติมเพื่อเริ่มต้นใช้งาน

## สิ่งที่มีให้

- **การค้นหาแบบคำสำคัญ** ผ่านดัชนีข้อความเต็ม FTS5 (การให้คะแนน BM25)
- **การค้นหาแบบเวกเตอร์** ผ่าน embeddings จากผู้ให้บริการที่รองรับใดก็ได้
- **การค้นหาแบบไฮบริด** ที่รวมทั้งสองแบบเข้าด้วยกันเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด
- **รองรับ CJK** ผ่านการตัดคำแบบ trigram สำหรับภาษาจีน ญี่ปุ่น และเกาหลี
- **การเร่งความเร็วด้วย sqlite-vec** สำหรับการค้นหาเวกเตอร์ภายในฐานข้อมูล (ไม่บังคับ)

## เริ่มต้นใช้งาน

หากคุณมี API key สำหรับ OpenAI, Gemini, Voyage หรือ Mistral เอนจินที่มีมาในตัว
จะตรวจจับได้อัตโนมัติและเปิดใช้การค้นหาแบบเวกเตอร์ โดยไม่ต้องตั้งค่าใด ๆ

หากต้องการกำหนดผู้ให้บริการอย่างชัดเจน:

```json5
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai",
      },
    },
  },
}
```

หากไม่มีผู้ให้บริการ embeddings จะใช้ได้เฉพาะการค้นหาแบบคำสำคัญเท่านั้น

## ผู้ให้บริการ embeddings ที่รองรับ

| ผู้ให้บริการ | ID        | ตรวจจับอัตโนมัติ | หมายเหตุ                              |
| ------------ | --------- | ---------------- | ------------------------------------- |
| OpenAI       | `openai`  | ใช่              | ค่าเริ่มต้น: `text-embedding-3-small` |
| Gemini       | `gemini`  | ใช่              | รองรับมัลติโหมด (ภาพ + เสียง)         |
| Voyage       | `voyage`  | ใช่              |                                       |
| Mistral      | `mistral` | ใช่              |                                       |
| Ollama       | `ollama`  | ไม่ใช่           | รันในเครื่อง ต้องตั้งค่าเอง            |
| Local        | `local`   | ใช่ (ลำดับแรก)   | โมเดล GGUF, ดาวน์โหลดประมาณ 0.6 GB    |

การตรวจจับอัตโนมัติจะเลือกผู้ให้บริการรายแรกที่สามารถ resolve API key ได้ ตาม
ลำดับที่แสดงไว้ ตั้งค่า `memorySearch.provider` เพื่อ override

## การทำดัชนีทำงานอย่างไร

OpenClaw จะทำดัชนี `MEMORY.md` และ `memory/*.md` เป็น chunk (~400 โทเคน พร้อม
overlap 80 โทเคน) และเก็บไว้ในฐานข้อมูล SQLite แยกตามเอเจนต์

- **ตำแหน่งดัชนี:** `~/.openclaw/memory/<agentId>.sqlite`
- **การเฝ้าดูไฟล์:** การเปลี่ยนแปลงในไฟล์ memory จะทริกเกอร์การทำดัชนีใหม่แบบ debounce (1.5 วินาที)
- **ทำดัชนีใหม่อัตโนมัติ:** เมื่อผู้ให้บริการ embedding, โมเดล หรือคอนฟิก
  การแบ่ง chunk เปลี่ยนไป ระบบจะสร้างดัชนีทั้งหมดใหม่โดยอัตโนมัติ
- **ทำดัชนีใหม่ตามต้องการ:** `openclaw memory index --force`

<Info>
คุณยังสามารถทำดัชนีไฟล์ Markdown ที่อยู่นอก workspace ได้ด้วย
`memorySearch.extraPaths` ดูรายละเอียดได้ที่
[เอกสารอ้างอิงคอนฟิก](/th/reference/memory-config#additional-memory-paths)
</Info>

## ควรใช้เมื่อใด

เอนจินที่มีมาในตัวเป็นตัวเลือกที่เหมาะสำหรับผู้ใช้ส่วนใหญ่:

- ใช้งานได้ทันทีโดยไม่ต้องมี dependency เพิ่มเติม
- รองรับการค้นหาแบบคำสำคัญและแบบเวกเตอร์ได้ดี
- รองรับผู้ให้บริการ embeddings ทั้งหมด
- การค้นหาแบบไฮบริดรวมข้อดีของทั้งสองแนวทางการดึงข้อมูล

พิจารณาเปลี่ยนไปใช้ [QMD](/th/concepts/memory-qmd) หากคุณต้องการ reranking, query
expansion หรืออยากทำดัชนีไดเรกทอรีนอก workspace

พิจารณา [Honcho](/th/concepts/memory-honcho) หากคุณต้องการ memory ข้ามเซสชันพร้อม
การทำโมเดลผู้ใช้แบบอัตโนมัติ

## การแก้ไขปัญหา

**การค้นหา memory ถูกปิดอยู่หรือไม่?** ตรวจสอบ `openclaw memory status` หากไม่พบผู้ให้บริการ
ให้กำหนดเองอย่างชัดเจนหรือเพิ่ม API key

**ผลลัพธ์เก่าหรือไม่อัปเดต?** รัน `openclaw memory index --force` เพื่อสร้างใหม่ ตัว watcher
อาจพลาดการเปลี่ยนแปลงได้ในบางกรณีที่พบไม่บ่อย

**โหลด sqlite-vec ไม่ได้หรือไม่?** OpenClaw จะ fallback ไปใช้ cosine similarity ภายในโปรเซส
โดยอัตโนมัติ ตรวจสอบ logs เพื่อดูข้อผิดพลาดในการโหลดแบบเจาะจง

## การตั้งค่า

สำหรับการตั้งค่าผู้ให้บริการ embedding, การปรับแต่งการค้นหาแบบไฮบริด (น้ำหนัก, MMR, temporal
decay), การทำดัชนีแบบ batch, memory แบบมัลติโหมด, sqlite-vec, extra path และตัวเลือกคอนฟิกอื่น ๆ ทั้งหมด โปรดดู
[เอกสารอ้างอิงการตั้งค่า Memory](/th/reference/memory-config)
