---
read_when:
    - คุณต้องการทำความเข้าใจแบ็กเอนด์หน่วยความจำเริ่มต้น
    - คุณต้องการกำหนดค่าผู้ให้บริการการฝังข้อมูลหรือการค้นหาแบบไฮบริด
summary: แบ็กเอนด์หน่วยความจำเริ่มต้นที่ใช้ SQLite พร้อมการค้นหาแบบคีย์เวิร์ด เวกเตอร์ และไฮบริด
title: เอนจินหน่วยความจำในตัว
x-i18n:
    generated_at: "2026-06-27T17:27:06Z"
    model: gpt-5.5
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: a867bd295778f81109b258a63a35a1683d652d4564e44335053af4d86f90584e
    source_path: concepts/memory-builtin.md
    workflow: 16
---

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

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

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

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

โดยค่าเริ่มต้น เอนจินในตัวจะใช้ embeddings ของ OpenAI หากคุณกำหนดค่า
`OPENAI_API_KEY` หรือ `models.providers.openai.apiKey` ไว้แล้ว การค้นหาแบบเวกเตอร์
จะทำงานได้โดยไม่ต้องตั้งค่าหน่วยความจำเพิ่มเติม

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

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

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

หากต้องการบังคับใช้ embeddings แบบ GGUF ภายในเครื่อง ให้ติดตั้ง plugin ผู้ให้บริการ llama.cpp อย่างเป็นทางการ
จากนั้นชี้ `local.modelPath` ไปยังไฟล์ GGUF:

```bash
openclaw plugins install @openclaw/llama-cpp-provider
```

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

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

| ผู้ให้บริการ      | ID                  | หมายเหตุ                              |
| ----------------- | ------------------- | ----------------------------------- |
| Bedrock           | `bedrock`           | ใช้เชนข้อมูลรับรองของ AWS           |
| DeepInfra         | `deepinfra`         | ค่าเริ่มต้น: `BAAI/bge-m3`              |
| Gemini            | `gemini`            | รองรับมัลติโหมด (รูปภาพ + เสียง) |
| GitHub Copilot    | `github-copilot`    | ใช้การสมัครใช้งาน Copilot           |
| ภายในเครื่อง     | `local`             | `@openclaw/llama-cpp-provider`      |
| Mistral           | `mistral`           |                                     |
| Ollama            | `ollama`            | ภายในเครื่อง/โฮสต์เอง                   |
| OpenAI            | `openai`            | ค่าเริ่มต้น: `text-embedding-3-small`   |
| เข้ากันได้กับ OpenAI | `openai-compatible` | ปลายทาง `/v1/embeddings` ทั่วไป   |
| Voyage            | `voyage`            |                                     |

ตั้งค่า `memorySearch.provider` เพื่อเปลี่ยนจาก OpenAI ไปใช้ตัวเลือกอื่น

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

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

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

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

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

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

- ใช้งานได้ทันทีโดยไม่ต้องมี dependency เพิ่มเติม
- จัดการการค้นหาด้วยคีย์เวิร์ดและแบบเวกเตอร์ได้ดี
- รองรับผู้ให้บริการ 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` เดียวกัน
ตั้งค่า `memorySearch.provider: "local"` เมื่อคุณต้องการ embeddings ภายในเครื่อง

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

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

## การกำหนดค่า

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

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

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