---
read_when:
    - คุณต้องการทำความเข้าใจแบ็กเอนด์หน่วยความจำเริ่มต้น
    - คุณต้องการกำหนดค่าผู้ให้บริการ embedding หรือการค้นหาแบบไฮบริด
summary: แบ็กเอนด์หน่วยความจำเริ่มต้นที่ใช้ SQLite พร้อมการค้นหาแบบคีย์เวิร์ด เวกเตอร์ และไฮบริด
title: เอนจินหน่วยความจำในตัว
x-i18n:
    generated_at: "2026-05-03T21:30:04Z"
    model: gpt-5.5
    provider: openai
    source_hash: 72f5d1fee02bff0962bd012575b62846c1f11c030fd1174fdb2af1e81909f52a
    source_path: concepts/memory-builtin.md
    workflow: 16
---

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

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

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

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

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

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

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

หากไม่มีผู้ให้บริการ embedding จะใช้ได้เฉพาะการค้นหาด้วยคีย์เวิร์ดเท่านั้น

หากต้องการบังคับใช้ผู้ให้บริการ embedding ในเครื่องแบบในตัว ให้ติดตั้งแพ็กเกจรันไทม์
`node-llama-cpp` แบบไม่บังคับไว้ข้าง OpenClaw จากนั้นชี้ `local.modelPath`
ไปยังไฟล์ GGUF:

```json5
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "local",
        fallback: "none",
        local: {
          modelPath: "~/.node-llama-cpp/models/embeddinggemma-300m-qat-Q8_0.gguf",
        },
      },
    },
  },
}
```

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

| ผู้ให้บริการ | ID          | ตรวจพบอัตโนมัติ | หมายเหตุ                            |
| --------- | ----------- | ------------- | ----------------------------------- |
| OpenAI    | `openai`    | ใช่           | ค่าเริ่มต้น: `text-embedding-3-small` |
| Gemini    | `gemini`    | ใช่           | รองรับมัลติโหมด (ภาพ + เสียง) |
| Voyage    | `voyage`    | ใช่           |                                     |
| Mistral   | `mistral`   | ใช่           |                                     |
| DeepInfra | `deepinfra` | ใช่           | ค่าเริ่มต้น: `BAAI/bge-m3`          |
| Ollama    | `ollama`    | ไม่ใช่        | ในเครื่อง ตั้งค่าอย่างชัดเจน        |
| Local     | `local`     | ใช่ (เป็นอันดับแรก) | รันไทม์ `node-llama-cpp` แบบไม่บังคับ |

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

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

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

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

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

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

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

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

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

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

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

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

**ตรวจไม่พบผู้ให้บริการในเครื่องหรือไม่** ยืนยันว่าเส้นทางในเครื่องมีอยู่และเรียกใช้:

```bash
openclaw memory status --deep --agent main
openclaw memory index --force --agent main
```

ทั้งคำสั่ง CLI แบบสแตนด์อโลนและ Gateway ใช้ id ผู้ให้บริการ `local` เดียวกัน
หากตั้งค่าผู้ให้บริการเป็น `auto` embeddings ในเครื่องจะถูกพิจารณาเป็นอันดับแรกเฉพาะเมื่อ
`memorySearch.local.modelPath` ชี้ไปยังไฟล์ในเครื่องที่มีอยู่

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

**sqlite-vec ไม่โหลดหรือไม่** OpenClaw จะถอยกลับไปใช้ cosine similarity ภายในโปรเซส
โดยอัตโนมัติ `openclaw memory status --deep` รายงานที่เก็บเวกเตอร์ในเครื่อง
แยกจากผู้ให้บริการ embedding ดังนั้น `Vector store: unavailable` ชี้
ไปที่การโหลด sqlite-vec ขณะที่ `Embeddings: unavailable` ชี้ไปที่ provider/auth
หรือความพร้อมของโมเดล ตรวจสอบบันทึกเพื่อดูข้อผิดพลาดการโหลดที่เฉพาะเจาะจง

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

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

## ที่เกี่ยวข้อง

- [ภาพรวมหน่วยความจำ](/th/concepts/memory)
- [การค้นหาหน่วยความจำ](/th/concepts/memory-search)
- [Active memory](/th/concepts/active-memory)
