OpenViking คืออะไร

Ashley Innocent

Ashley Innocent

19 March 2026

OpenViking คืออะไร

Apidog สำหรับองค์กร

ติดตั้งภายในองค์กร

SSO & RBAC

รองรับ SOC 2

สำรวจ Apidog Enterprise

สรุปสาระสำคัญ (TL;DR)

OpenViking คือฐานข้อมูลบริบทแบบโอเพนซอร์สสำหรับเอเจนต์ AI ซึ่งมาแทนที่การจัดเก็บเวกเตอร์แบบเรียบด้วยรูปแบบระบบไฟล์ โดยจะจัดระเบียบบริบท (ความทรงจำ, ทรัพยากร, ทักษะ) ภายใต้ URI viking:// โดยมีสามเลเยอร์: L0 (ประมาณ 100 โทเค็น), L1 (ประมาณ 2k โทเค็น), L2 (เนื้อหาเต็ม) ผลการทดสอบแสดงให้เห็นว่าลดต้นทุนโทเค็นได้ 91% และทำงานสำเร็จได้ดีขึ้น 43% เมื่อเทียบกับ RAG แบบดั้งเดิม

บทนำ

เอเจนต์ AI ของคุณมักจะลืมสิ่งต่าง ๆ มันขอปลายทาง API ตัวเดิมถึงสองครั้ง มันเพิกเฉยต่อการตั้งค่าสภาพแวดล้อมทดสอบของคุณ มันลืมว่าการทดสอบใดผ่านไปเมื่อวานนี้

นี่คือความเป็นจริงของการสร้างเอเจนต์ในปัจจุบัน ทีมส่วนใหญ่จะนำ RAG pipelines, ฐานข้อมูลเวกเตอร์ และระบบหน่วยความจำแบบกำหนดเองมารวมกัน ผลลัพธ์ที่ได้: บริบทที่กระจัดกระจาย, ค่าโทเค็นที่พุ่งสูงขึ้น, และการเรียกคืนข้อมูลที่ล้มเหลวอย่างเงียบ ๆ

ข้อมูลสนับสนุนสิ่งนี้ ในการทดสอบเกณฑ์มาตรฐานโดยใช้ชุดข้อมูล LoCoMo10 ระบบ RAG แบบดั้งเดิมทำอัตราการทำงานสำเร็จได้เพียง 35-44% ในขณะที่ใช้โทเค็นอินพุตไป 24-51 ล้านโทเค็น

OpenViking ใช้วิธีการที่แตกต่างออกไป สร้างโดยทีม OpenViking ของ ByteDance โดยมาแทนที่การจัดเก็บเวกเตอร์แบบเรียบด้วยรูปแบบระบบไฟล์ บริบททั้งหมดอยู่ภายใต้ URI viking:// พร้อมกับการโหลดแบบลำดับชั้น L0/L1/L2 ผลลัพธ์ที่ได้: ทำงานสำเร็จ 52% โดยใช้โทเค็นน้อยลง 91%

💡
ผู้ใช้ Apidog ที่สร้างเอเจนต์ทดสอบ API สามารถรวม OpenViking เพื่อรักษาบริบทการสนทนาข้ามการทดสอบ, จดจำการตั้งค่าสภาพแวดล้อมของผู้ใช้ และจัดเก็บเอกสาร API สำหรับการดึงข้อมูลเชิงความหมาย
ปุ่ม

ในคู่มือนี้ คุณจะได้เรียนรู้วิธีที่ OpenViking แก้ปัญหาบริบทที่กระจัดกระจาย, เห็นโมเดล L0/L1/L2 ในการทำงานจริง และปรับใช้เซิร์ฟเวอร์แรกของคุณภายใน 15 นาที

ปัญหาบริบทของเอเจนต์

เอเจนต์ AI เผชิญกับความท้าทายด้านบริบทที่แอปพลิเคชันแบบดั้งเดิมไม่เคยเจอมาก่อน

ลองพิจารณาเอเจนต์ที่ช่วยนักพัฒนาทดสอบ API ในช่วงหนึ่งสัปดาห์ มันจำเป็นต้องติดตาม:

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

ความท้าทายหลักห้าประการ

OpenViking ระบุปัญหาหลักห้าประการในการจัดการบริบทของเอเจนต์:

ความท้าทาย RAG แบบดั้งเดิม โซลูชันของ OpenViking
บริบทที่กระจัดกระจาย ความทรงจำ, ทรัพยากร, ทักษะถูกจัดเก็บแยกกัน รูปแบบระบบไฟล์ที่รวมเป็นหนึ่งเดียวภายใต้ viking://
ความต้องการที่เพิ่มขึ้นอย่างรวดเร็ว งานที่ใช้เวลานานสร้างบริบทจำนวนมาก การโหลดแบบลำดับชั้น L0/L1/L2 ลดโทเค็นลง 91%
การเรียกคืนข้อมูลที่ไม่ดี การค้นหาเวกเตอร์แบบเรียบขาดมุมมองแบบองค์รวม การเรียกคืนข้อมูลแบบ Directory recursive พร้อมการวิเคราะห์เจตนา
ไม่สามารถสังเกตได้ กระบวนการเรียกคืนข้อมูลแบบกล่องดำ แสดงภาพเส้นทางการค้นหาสำหรับการดีบัก
การทำซ้ำที่จำกัด เฉพาะประวัติการโต้ตอบของผู้ใช้เท่านั้น การจัดการเซสชันอัตโนมัติพร้อมหน่วยความจำ 6 ประเภท

สิ่งนี้แสดงถึงการเปลี่ยนแปลงจาก “จัดเก็บทุกสิ่ง, เรียกคืนอย่างคลุมเครือ” ไปสู่ “จัดโครงสร้างทุกสิ่ง, เรียกคืนอย่างแม่นยำ”

OpenViking คืออะไร?

OpenViking คือฐานข้อมูลบริบทแบบโอเพนซอร์สสำหรับเอเจนต์ AI ที่สร้างโดยทีม OpenViking ของ ByteDance ภายใต้ไลเซนส์ Apache 2.0

ภาพแสดงโครงสร้าง OpenViking: L0/L1/L2, AGFS, Vector DB, Agent

มันรวบรวมบริบททั้งหมดเข้าสู่ระบบไฟล์เสมือน ความทรงจำ, ทรัพยากร และทักษะจะถูกแมปไปยังไดเรกทอรีภายใต้ viking:// โดยแต่ละรายการมี URI ที่ไม่ซ้ำกัน

viking://
├── resources/              # External knowledge: docs, code, web pages
│   ├── my_project/
│   │   ├── docs/
│   │   │   ├── api/
│   │   │   └── tutorials/
│   │   └── src/
│   └── ...
├── user/                   # User-specific: preferences, habits
│   └── memories/
│       ├── preferences/
│       │   ├── writing_style
│       │   └── coding_habits
│       └── ...
└── agent/                  # Agent capabilities: skills, task memories
    ├── skills/
    │   ├── search_code
    │   ├── analyze_data
    │   └── ...
    ├── memories/
    └── instructions/

เอเจนต์จะได้รับความสามารถในการจัดการบริบทโดยตรง:

ลองนึกภาพความแตกต่างระหว่างการค้นหาฮาร์ดไดรฟ์ทั้งหมดของคุณ กับการรู้ว่าไฟล์นั้นอยู่ในไดเรกทอรีใด

คุณสมบัติหลัก 1: รูปแบบการจัดการระบบไฟล์

รูปแบบระบบไฟล์แก้ปัญหาบริบทที่กระจัดกระจายโดยการรวมประเภทบริบททั้งหมดภายใต้โมเดลเดียว

บริบทสามประเภท

ประเภท วัตถุประสงค์ วงจรชีวิต ความคิดริเริ่ม
ทรัพยากร ความรู้ภายนอก (เอกสาร, โค้ด, คำถามที่พบบ่อย) ระยะยาว, คงที่ ผู้ใช้เพิ่ม
ความทรงจำ การรับรู้ของเอเจนต์ (การตั้งค่า, ประสบการณ์) ระยะยาว, เปลี่ยนแปลงได้ เอเจนต์ดึงข้อมูล
ทักษะ ความสามารถที่เรียกใช้ได้ (เครื่องมือ, MCP) ระยะยาว, คงที่ เอเจนต์เรียกใช้

แต่ละประเภทจะอยู่ในไดเรกทอรีของตัวเอง:

API แบบ Unix

OpenViking มีการทำงานแบบบรรทัดคำสั่งที่คุ้นเคย:

from openviking import OpenViking

client = OpenViking(path="./data")

# Semantic search across all context types
results = client.find("user authentication")

# List directory contents
contents = client.ls("viking://resources/")

# Read full content
doc = client.read("viking://resources/docs/auth.md")

# Get quick summary (L0 layer)
abstract = client.abstract("viking://resources/docs/")

# Get detailed overview (L1 layer)
overview = client.overview("viking://resources/docs/")

API ทำงานผ่าน Python SDK หรือเซิร์ฟเวอร์ HTTP ซึ่งเข้ากันได้กับเฟรมเวิร์กเอเจนต์ใด ๆ

คุณสมบัติหลัก 2: การโหลดบริบทแบบลำดับชั้น L0/L1/L2

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

เลเยอร์ ชื่อ ไฟล์ ขีดจำกัดโทเค็น วัตถุประสงค์
L0 บทคัดย่อ .abstract.md ~100 โทเค็น การค้นหาเวกเตอร์, การกรองอย่างรวดเร็ว
L1 ภาพรวม .overview.md ~2k โทเค็น การจัดอันดับใหม่, การนำทางเนื้อหา
L2 รายละเอียด ไฟล์ต้นฉบับ ไม่จำกัด เนื้อหาเต็ม, การโหลดตามต้องการ

วิธีการทำงาน

เมื่อคุณเพิ่มทรัพยากร (เช่น ไฟล์เอกสาร PDF) OpenViking จะ:

  1. แยกวิเคราะห์เอกสารเป็นข้อความ (ยังไม่มีการเรียก LLM)
  2. สร้างโครงสร้างต้นไม้ไดเรกทอรีในการจัดเก็บ AGFS
  3. จัดคิวการประมวลผลเชิงความหมายแบบอะซิงโครนัส
  4. สร้างบทคัดย่อ L0 และภาพรวม L1 จากล่างขึ้นบน

ผลลัพธ์คือโครงสร้างแบบลำดับชั้น:

viking://resources/my_project/
├── .abstract.md               # L0: "เอกสาร API ที่ครอบคลุมการยืนยันตัวตน, ปลายทาง, ข้อจำกัดอัตรา"
├── .overview.md               # L1: สรุปโดยละเอียดพร้อมการนำทางส่วน
├── docs/
│   ├── .abstract.md          # แต่ละไดเรกทอรีมี L0/L1
│   ├── .overview.md
│   ├── auth.md               # L2: เนื้อหาเต็ม
│   ├── endpoints.md
│   └── rate-limits.md
└── src/
    └── ...

ผลกระทบต่องบประมาณโทเค็น

ลำดับชั้นนี้ช่วยให้ประหยัดค่าใช้จ่ายได้อย่างมาก:

# RAG แบบดั้งเดิม: โหลดเนื้อหาทั้งหมด
full_docs = retrieve_all("authentication")  # 50k tokens

# OpenViking: เริ่มต้นด้วย L1, โหลด L2 เมื่อจำเป็นเท่านั้น
overview = client.overview("viking://resources/docs/auth/")  # 2k tokens

if needs_more_detail(overview):
    content = client.read("viking://resources/docs/auth/oauth.md")  # โหลด L2 ที่เฉพาะเจาะจง

ในการทดสอบเกณฑ์มาตรฐาน วิธีการนี้ลดต้นทุนโทเค็นอินพุตลง 91% เมื่อเทียบกับ RAG แบบดั้งเดิม ในขณะที่ปรับปรุงอัตราการทำงานสำเร็จขึ้น 43%

คุณสมบัติหลัก 3: การเรียกคืนข้อมูลแบบ Directory Recursive

การค้นหาเวกเตอร์เดี่ยวมีปัญหาในการจัดการกับคำค้นหาที่ซับซ้อน OpenViking ใช้ กลยุทธ์การเรียกคืนข้อมูลแบบ directory recursive:

กระบวนการห้าขั้นตอน

1. การวิเคราะห์เจตนา
   ↓
2. การวางตำแหน่งเริ่มต้น (ค้นหาไดเรกทอรีที่มีคะแนนสูง)
   ↓
3. การสำรวจที่ละเอียดขึ้น (ค้นหาภายในไดเรกทอรี)
   ↓
4. การลงลึกแบบวนซ้ำ (เจาะเข้าไปในไดเรกทอรีย่อย)
   ↓
5. การรวมผลลัพธ์ (คืนบริบทที่จัดอันดับ)

ขั้นตอนที่ 1: การวิเคราะห์เจตนา

คำถาม “ฉันจะยืนยันตัวตนผู้ใช้ได้อย่างไร” จะถูกวิเคราะห์เพื่อระบุ:

ขั้นตอนที่ 2: การวางตำแหน่งเริ่มต้น

การค้นหาเวกเตอร์จะระบุตำแหน่งไดเรกทอรีที่มีคะแนนสูงได้อย่างรวดเร็ว:

ขั้นตอนที่ 3: การสำรวจที่ละเอียดขึ้น

ภายในไดเรกทอรีอันดับต้น การค้นหารองจะค้นหาไฟล์ที่เฉพาะเจาะจง:

ขั้นตอนที่ 4: การลงลึกแบบวนซ้ำ

หากมีไดเรกทอรีย่อย (เช่น auth/providers/) กระบวนการจะทำซ้ำแบบวนซ้ำ

ขั้นตอนที่ 5: การรวมผลลัพธ์

ผลลัพธ์สุดท้ายจะถูกรวมและจัดอันดับตามความเกี่ยวข้อง พร้อมรักษาเส้นทางการเรียกคืนข้อมูลไว้

กลยุทธ์ “ล็อคไดเรกทอรีก่อน แล้วจึงสำรวจเนื้อหา” นี้ช่วยเพิ่มความแม่นยำในการเรียกคืนข้อมูลโดยการทำความเข้าใจบริบททั้งหมดของข้อมูล ไม่ใช่แค่ส่วนย่อยที่แยกออกมา

คุณสมบัติหลัก 4: การแสดงภาพเส้นทางการเรียกคืนข้อมูล

RAG แบบดั้งเดิมเป็นเหมือนกล่องดำ เมื่อการเรียกคืนข้อมูลล้มเหลว คุณไม่สามารถบอกได้ว่าเป็นปัญหาความคล้ายคลึงของเวกเตอร์, ปัญหาการแบ่งส่วน หรือข้อมูลที่ขาดหายไป

โครงสร้างระบบไฟล์ของ OpenViking ทำให้การเรียกคืนข้อมูล สามารถสังเกตได้:

เส้นทางการเรียกคืนข้อมูลสำหรับคำถาม: "OAuth token refresh"

├── viking://resources/docs/
│   ├── [คะแนน: 0.45] .abstract.md: ข้าม (ความเกี่ยวข้องต่ำ)
│   └── [คะแนน: 0.89] auth/: เลือก (ความเกี่ยวข้องสูง)
│       ├── [คะแนน: 0.92] oauth.md: ส่งคืน
│       ├── [คะแนน: 0.34] jwt.md: ข้าม
│       └── [คะแนน: 0.78] providers/
│           └── [คะแนน: 0.85] google.md: ส่งคืน

เส้นทางนี้แสดงให้เห็นถึง:

สำหรับการดีบัก สิ่งนี้มีค่ามาก คุณสามารถดูได้ว่าเอเจนต์พลาดบริบทไปหรือไม่ เพราะมันอยู่ในไดเรกทอรีที่ไม่ถูกต้อง, มีบทคัดย่อ L0 ที่ไม่ดี หรือตกต่ำกว่าเกณฑ์คะแนนที่กำหนดไว้

คุณสมบัติหลัก 5: การจัดการเซสชันอัตโนมัติ

OpenViking มี วงจรการทำซ้ำความทรงจำด้วยตนเอง ที่สร้างมาในตัว เมื่อสิ้นสุดแต่ละเซสชัน ระบบสามารถดึงความทรงจำและอัปเดตความรู้ของเอเจนต์ได้โดยอัตโนมัติ

หกประเภทของความทรงจำ

หมวดหมู่ เจ้าของ ที่ตั้ง คำอธิบาย กลยุทธ์การอัปเดต
โปรไฟล์ ผู้ใช้ user/memories/.overview.md ข้อมูลผู้ใช้พื้นฐาน สามารถเพิ่มเติมได้
การตั้งค่า ผู้ใช้ user/memories/preferences/ การตั้งค่าตามหัวข้อ สามารถเพิ่มเติมได้
เอนทิตี ผู้ใช้ user/memories/entities/ บุคคล, โปรเจกต์, องค์กร สามารถเพิ่มเติมได้
เหตุการณ์ ผู้ใช้ user/memories/events/ การตัดสินใจ, เหตุการณ์สำคัญ ไม่มีการอัปเดต
กรณีศึกษา เอเจนต์ agent/memories/cases/ กรณีที่เรียนรู้ ไม่มีการอัปเดต
รูปแบบ เอเจนต์ agent/memories/patterns/ รูปแบบที่เรียนรู้ ไม่มีการอัปเดต

การทำงานของการดึงความทรงจำ

# เริ่มเซสชัน
session = client.session()

# เพิ่มข้อความ (รอบการสนทนา)
await session.add_message("user", [{"type": "text", "text": "I prefer dark mode in the UI"}])
await session.add_message("assistant", [{"type": "text", "text": "Got it. I'll use dark mode for all future screenshots."}])

# บันทึกการใช้งานเครื่องมือ
await session.add_usage({
    "tool": "screenshot",
    "parameters": {"theme": "dark"},
    "result": "success"
})

# คอมมิตเซสชัน: ทริกเกอร์การดึงความทรงจำ
await session.commit()

เมื่อคอมมิต OpenViking จะ:

  1. บีบอัดเซสชัน (เก็บ N รอบล่าสุด, เก็บถาวรที่เก่ากว่า)
  2. ดึงความทรงจำโดยใช้การวิเคราะห์ LLM
  3. อัปเดตไดเรกทอรีหน่วยความจำที่เหมาะสม
  4. สร้าง L0/L1 สำหรับเนื้อหาหน่วยความจำใหม่

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

ภาพรวมสถาปัตยกรรม

สถาปัตยกรรมระบบของ OpenViking แยกส่วนความรับผิดชอบออกเป็นหลายเลเยอร์:

แผนภาพภาพรวมสถาปัตยกรรม OpenViking

การจัดเก็บสองเลเยอร์

OpenViking แยกเนื้อหาออกจากดัชนี:

เลเยอร์ เทคโนโลยี จัดเก็บ
AGFS ระบบไฟล์แบบกำหนดเอง เนื้อหา L0/L1/L2, ไฟล์มัลติมีเดีย, ความสัมพันธ์
ดัชนีเวกเตอร์ ฐานข้อมูลเวกเตอร์ URIs, embeddings, เมตาดาต้า (ไม่มีเนื้อหาไฟล์)

การแยกส่วนนี้ช่วยให้มั่นใจว่า:

เริ่มต้นอย่างรวดเร็ว: ปรับใช้ OpenViking Server เครื่องแรกของคุณ

ข้อกำหนดเบื้องต้น

ขั้นตอนที่ 1: ติดตั้ง OpenViking

pip install openviking --upgrade --force-reinstall

สามารถเลือกติดตั้ง Rust CLI สำหรับการเข้าถึงเทอร์มินัลได้:

curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/crates/ov_cli/install.sh | bash

ขั้นตอนที่ 2: กำหนดค่าโมเดล

OpenViking ต้องการความสามารถของโมเดลสองประเภท:

สร้างไฟล์ ~/.openviking/ov.conf:

{
  "storage": {
    "workspace": "/home/your-name/openviking_workspace"
  },
  "log": {
    "level": "INFO",
    "output": "stdout"
  },
  "embedding": {
    "dense": {
      "api_base": "https://api.openai.com/v1",
      "api_key": "your-openai-api-key",
      "provider": "openai",
      "dimension": 3072,
      "model": "text-embedding-3-large"
    },
    "max_concurrent": 10
  },
  "vlm": {
    "api_base": "https://api.openai.com/v1",
    "api_key": "your-openai-api-key",
    "provider": "openai",
    "model": "gpt-4o",
    "max_concurrent": 100
  }
}

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

ผู้ให้บริการ โมเดล Embedding โมเดล VLM
volcengine doubao-embedding-vision doubao-seed-2.0-pro
openai text-embedding-3-large gpt-4o, gpt-4-vision
litellm ผ่าน LiteLLM proxy Claude, Gemini, DeepSeek, Qwen, Ollama, vLLM

การรองรับ LiteLLM หมายความว่าคุณสามารถใช้โมเดล Anthropic, Google, Ollama แบบโลคัล หรือปลายทางใด ๆ ที่เข้ากันได้กับ OpenAI ได้

ขั้นตอนที่ 3: เริ่มเซิร์ฟเวอร์

openviking-server

หรือรันในเบื้องหลัง:

nohup openviking-server > /data/log/openviking.log 2>&1 &

ขั้นตอนที่ 4: เพิ่มทรัพยากรแรกของคุณ

# ใช้ Rust CLI
ov add-resource https://docs.example.com/api-guide.pdf

# หรือใช้ Python SDK
from openviking import OpenViking

client = OpenViking(path="./data")
client.add_resource("https://docs.example.com/api-guide.pdf")

ขั้นตอนที่ 5: ค้นหาและดึงข้อมูล

# รอการประมวลผลเชิงความหมาย จากนั้นค้นหา
ov find "authentication methods"

# แสดงรายการเนื้อหาในไดเรกทอรี
ov ls viking://resources/

# ดูโครงสร้างไดเรกทอรี
ov tree viking://resources/docs -L 2

# ค้นหาเนื้อหาที่เฉพาะเจาะจง
ov grep "OAuth" --uri viking://resources/docs/

ขั้นตอนที่ 6: เปิดใช้งาน VikingBot (ไม่บังคับ)

VikingBot คือเฟรมเวิร์กเอเจนต์ AI ที่สร้างขึ้นบน OpenViking:

pip install "openviking[bot]"

# เริ่มเซิร์ฟเวอร์โดยเปิดใช้งานบอท
openviking-server --with-bot

# ในเทอร์มินัลอื่น, เริ่มแชทแบบโต้ตอบ
ov chat

เกณฑ์มาตรฐานประสิทธิภาพ

OpenViking ได้รับการทดสอบเกณฑ์มาตรฐานเทียบกับ RAG แบบดั้งเดิม (LanceDB) และระบบหน่วยความจำพื้นฐานโดยใช้ชุดข้อมูล LoCoMo10 (1,540 กรณีบทสนทนาระยะยาว)

อัตราการทำงานสำเร็จ

ระบบ อัตราความสำเร็จ โทเค็นอินพุต
OpenClaw (หน่วยความจำพื้นฐาน) 35.65% 24.6M
OpenClaw + LanceDB 44.55% 51.6M
OpenClaw + OpenViking 52.08% 4.3M

ข้อค้นพบที่สำคัญ

ผลลัพธ์เหล่านี้มาจากการรวม OpenViking เป็นปลั๊กอินกับ OpenClaw ซึ่งเป็นผู้ช่วยเขียนโค้ด AI แบบโอเพนซอร์ส ชุดข้อมูลทดสอบอิงจากบทสนทนาระยะยาวที่การเก็บรักษาความทรงจำมีความสำคัญอย่างยิ่ง

การผสานรวม OpenViking กับ Apidog

ผู้ใช้ Apidog ที่สร้างเอเจนต์ AI สำหรับการทดสอบ API สามารถใช้ OpenViking เพื่อรักษาบริบทการสนทนา, จัดเก็บเอกสาร API และจดจำการตั้งค่าของผู้ใช้ในแต่ละเซสชันได้

แผนภาพการผสานรวม Apidog กับ OpenViking

ขั้นตอนที่ 1: ตั้งค่า OpenViking Server

ทำตามขั้นตอนเริ่มต้นอย่างรวดเร็วด้านบนเพื่อปรับใช้ OpenViking ด้วยโมเดล VLM และ embedding ที่คุณต้องการ

ขั้นตอนที่ 2: นำเข้าเอกสาร Apidog API

# เพิ่มเอกสารโปรเจกต์ Apidog ของคุณเป็นทรัพยากร
ov add-resource https://docs.apidog.com/overview
ov add-resource https://docs.apidog.com/api-testing

สิ่งนี้จะนำเข้าเอกสาร Apidog เข้าสู่ viking://resources/ พร้อมการประมวลผล L0/L1/L2 โดยอัตโนมัติ

ขั้นตอนที่ 3: จัดเก็บการตั้งค่าของผู้ใช้

from openviking import OpenViking

client = OpenViking(path="./apidog-agent-data")
session = client.session()

# บันทึกการตั้งค่าสภาพแวดล้อมเริ่มต้นของผู้ใช้
await session.add_message("user", [{
    "type": "text",
    "text": "Always use the staging environment for API tests"
}])
await session.commit()  # ดึงความทรงจำการตั้งค่าโดยอัตโนมัติ

ขั้นตอนที่ 4: สอบถามบริบทระหว่างการทดสอบ

# ค้นหาปลายทาง API ที่เกี่ยวข้องก่อนรันการทดสอบ
results = client.find("authentication endpoints")
for ctx in results.resources:
    print(f"Found: {ctx.uri}")

# ดึงการตั้งค่าสภาพแวดล้อมของผู้ใช้
prefs = client.find("staging environment preference", target_uri="viking://user/memories/")

ขั้นตอนที่ 5: เชื่อมต่อกับ Agent Framework ของคุณ

OpenViking เปิดเผยทั้ง Python SDK และ HTTP API:

# Python SDK
from openviking import OpenViking
client = OpenViking(path="./data")

# หรือ HTTP API
import httpx
response = httpx.post(
    "http://localhost:1933/api/v1/search/find",
    json={"query": "authentication endpoints"},
    headers={"X-API-Key": "your-api-key"}
)

เทคนิคขั้นสูงและแนวปฏิบัติที่ดีที่สุด

เคล็ดลับสำหรับผู้เชี่ยวชาญสำหรับการปรับใช้ในการผลิต

1. อุ่นบริบทที่เข้าถึงบ่อยล่วงหน้า

โหลดเอกสารสำคัญเข้าสู่ L0/L1 ในช่วงนอกเวลาทำการเพื่อลดความล่าช้าระหว่างการทำงานของเอเจนต์

# ทริกเกอร์การประมวลผลเชิงความหมายทันที
ov add-resource https://docs.example.com --wait

2. ใช้การหมดอายุของบริบท

ตั้งค่าการล้างข้อมูลเซสชันที่ล้าสมัยโดยอัตโนมัติ:

# เก็บถาวรเซสชันที่เก่ากว่า 7 วัน
await session.archive(max_age_days=7)

3. ตรวจสอบสถานะดัชนีเวกเตอร์

ติดตามขนาดดัชนีและความล่าช้าในการสอบถาม:

ov debug stats

ข้อผิดพลาดทั่วไปที่ควรหลีกเลี่ยง

  1. โหลดเนื้อหา L2 ก่อนเวลาอันควร: ควรเริ่มต้นด้วย L0/L1 เสมอเพื่อประหยัดโทเค็น
  2. ข้ามการคอมมิตเซสชัน: การดึงความทรงจำจะเกิดขึ้นเมื่อมีการคอมมิตเท่านั้น
  3. การโหลดไดเรกทอรีเดียวมากเกินไป: แบ่งทรัพยากรขนาดใหญ่เป็นไดเรกทอรีย่อยตามหัวข้อ
  4. เพิกเฉยต่อเส้นทางการเรียกคืนข้อมูล: ใช้เส้นทางที่แสดงภาพเพื่อดีบักผลลัพธ์ที่ไม่ดี

การเพิ่มประสิทธิภาพ

สถานการณ์ คำแนะนำ
ปริมาณการสอบถามสูง รัน OpenViking เป็น HTTP server พร้อม connection pooling
เอกสารขนาดใหญ่ แบ่งเป็นส่วนย่อยตามหัวข้อก่อนนำเข้า
ความต้องการความหน่วงต่ำ สร้าง L0/L1 ล่วงหน้าสำหรับเนื้อหาที่เข้าถึงบ่อย
การตั้งค่าแบบ Multi-tenant ใช้ workspace แยกต่างหากสำหรับแต่ละ tenant

แนวปฏิบัติที่ดีที่สุดด้านความปลอดภัย

กรณีการใช้งานจริง

1. ผู้ช่วยเขียนโค้ด AI

ทีมพัฒนาได้ผสานรวม OpenViking เข้ากับผู้ช่วยเขียนโค้ดภายในของพวกเขา ตอนนี้เอเจนต์สามารถ:

ผลลัพธ์: ลดพฤติกรรมเอเจนต์ “ขี้ลืม” ได้ 67% ประหยัดค่าโทเค็นได้ 43%

2. เอเจนต์ฝ่ายสนับสนุนลูกค้า

บริษัท SaaS แห่งหนึ่งได้ปรับใช้ OpenViking สำหรับแชทบอทสนับสนุนลูกค้า:

ผลลัพธ์: การแก้ไขปัญหาในครั้งแรกดีขึ้นจาก 52% เป็น 71%

3. ผู้ช่วยงานวิจัย

ห้องปฏิบัติการวิจัยแห่งหนึ่งใช้ OpenViking ในการจัดระเบียบเอกสารและบันทึก:

ผลลัพธ์: นักวิจัยพบเอกสารที่เกี่ยวข้องเร็วขึ้น 3 เท่าด้วยการค้นหาเชิงความหมาย

ทางเลือกและการเปรียบเทียบ

OpenViking ไม่ใช่โซลูชันการจัดการบริบทเพียงอย่างเดียว นี่คือการเปรียบเทียบกับทางเลือกอื่น:

OpenViking เทียบกับฐานข้อมูลเวกเตอร์แบบดั้งเดิม

ประเด็น RAG แบบดั้งเดิม (Pinecone, LanceDB) OpenViking
โมเดลการจัดเก็บ ส่วนเวกเตอร์แบบเรียบ ระบบไฟล์แบบลำดับชั้น
การเรียกคืนข้อมูล ความคล้ายคลึง Top-K Directory recursive + การวิเคราะห์เจตนา
ความสามารถในการสังเกต กล่องดำ แสดงภาพเส้นทางการค้นหา
ประสิทธิภาพโทเค็น โหลดทั้งหมดหรือตัดทอน การโหลดแบบก้าวหน้า L0/L1/L2
การทำซ้ำความทรงจำ ด้วยตนเองหรือไม่มี การจัดการเซสชันอัตโนมัติ
ประเภทบริบท เฉพาะเอกสาร ทรัพยากร, ความทรงจำ, ทักษะที่รวมเป็นหนึ่งเดียว
การดีบัก การคาดเดา บัน

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API