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

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

## ความสามารถที่มีให้

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

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

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

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

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

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

หากต้องการบังคับใช้ 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",
        },
      },
    },
  },
}
```

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

| ผู้ให้บริการ       | ID                  | หมายเหตุ                                      |
| ----------------- | ------------------- | --------------------------------------------- |
| Bedrock           | `bedrock`           | ใช้ลำดับการค้นหาข้อมูลประจำตัวของ AWS         |
| DeepInfra         | `deepinfra`         | ค่าเริ่มต้น: `BAAI/bge-m3`                    |
| Gemini            | `gemini`            | รองรับหลายรูปแบบ (รูปภาพ + เสียง)             |
| GitHub Copilot    | `github-copilot`    | ใช้การสมัครสมาชิก Copilot ของคุณ              |
| LM Studio         | `lmstudio`          | ภายในเครื่อง/โฮสต์ด้วยตนเอง                   |
| ภายในเครื่อง      | `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`
- **การบำรุงรักษาพื้นที่จัดเก็บ:** ไฟล์ประกอบ WAL ของ SQLite ถูกจำกัดขนาดด้วยการทำ
  checkpoint เป็นระยะและเมื่อปิดระบบ
- **การเฝ้าดูไฟล์:** การเปลี่ยนแปลงไฟล์หน่วยความจำจะกระตุ้นให้จัดทำดัชนีใหม่แบบหน่วงรวมเหตุการณ์
  (ค่าเริ่มต้น 1.5 วินาที)
- **การจัดทำดัชนีใหม่อัตโนมัติ:** ดัชนีจะสร้างใหม่โดยอัตโนมัติเมื่อผู้ให้บริการ
  embeddings, โมเดล, การกำหนดค่าการแบ่งส่วน, แหล่งข้อมูลที่กำหนดค่าไว้ หรือขอบเขตเปลี่ยนแปลง
- **การจัดทำดัชนีใหม่ตามต้องการ:** `openclaw memory index --force`

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

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

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

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

พิจารณาเปลี่ยนไปใช้ [QMD](/th/concepts/memory-qmd) หากคุณต้องการจัดอันดับผลลัพธ์ใหม่ ขยายคำค้น
หรือต้องการจัดทำดัชนีไดเรกทอรีที่อยู่นอกพื้นที่ทำงาน

พิจารณาใช้ [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 จะกลับไปใช้การคำนวณความคล้ายแบบโคไซน์
ภายในโปรเซสโดยอัตโนมัติ `openclaw memory status --deep` รายงานสถานะ
พื้นที่จัดเก็บเวกเตอร์ภายในเครื่องแยกจากผู้ให้บริการ embeddings ดังนั้น `Vector store:
unavailable` บ่งชี้ปัญหาการโหลด sqlite-vec ขณะที่ `Embeddings: unavailable`
บ่งชี้ปัญหาความพร้อมของผู้ให้บริการ/การยืนยันตัวตนหรือโมเดล ตรวจสอบบันทึกเพื่อดูข้อผิดพลาด
ในการโหลดที่เฉพาะเจาะจง

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

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

## เนื้อหาที่เกี่ยวข้อง

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