Một AI agent không có bộ nhớ bị kẹt tự giới thiệu lại mỗi cuộc hội thoại. Cách sửa là một cơ sở dữ liệu vector — nó lưu các embedding của tài liệu, ghi chú hay các chat trước của bạn để agent có thể nhớ lại các phần liên quan theo yêu cầu (đó là chữ "R" trong RAG). Bạn có thể thuê nó như một dịch vụ có quản lý, hoặc bạn có thể tự chạy nó trên một VPS và giữ dữ liệu của bạn — vốn thường là dữ liệu riêng tư của bạn — trên một cỗ máy bạn kiểm soát. Đây là cách, và nó thực sự tốn bao nhiêu RAM.
Hai lựa chọn tốt
Bạn không cần gì kỳ lạ. Hai con đường bao phủ gần như mọi người:
pgvector — một extension Postgres. Nếu bạn đã chạy Postgres (hoặc vui vẻ làm vậy), cái này thêm tìm kiếm vector vào cơ sở dữ liệu bạn đã có. Một dịch vụ, một sao lưu, SQL bạn biết. Khởi đầu ít công sức nhất với khoảng cách lớn.
Qdrant — một engine vector chuyên dụng. Với tới nó khi bạn có nhiều vector (vài triệu+) hoặc muốn lọc metadata nhanh và một API chuyên dụng. Nó là một dịch vụ riêng để chạy, nhưng nó được xây cho chính công việc này.
Cho hầu hết các agent đang tìm chỗ đứng, pgvector là câu trả lời đầu tiên đúng. Chuyển sang Qdrant khi bạn đã vượt quá nó, không phải trước đó.
Thực tế RAM (đây là phần người ta đánh giá thấp)
Tìm kiếm vector nhanh vì chỉ mục sống trong bộ nhớ — nên RAM, không phải đĩa, là ràng buộc thật của bạn. Một hướng dẫn đại khái:
- Vài trăm nghìn embedding — thoải mái trong 2 GB.
- Vài triệu — lên kế hoạch cho 4 GB+ và tinh chỉnh chỉ mục.
- Đĩa là phần dễ: một triệu embedding chỉ là vài GB, nên 25–45 GB bao phủ một store nghiêm túc.
Nên chọn kích cỡ cho chỉ mục, không phải tập tin. (Cùng logic như hướng dẫn chọn kích cỡ chung — thứ nặng không rõ ràng cho tới khi bạn đo.)
Bắt đầu nhanh: pgvector
Trên một cỗ máy với Postgres (Docker dễ nhất — cùng mẫu như tự host n8n):
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE memory (
id bigserial PRIMARY KEY,
content text,
embedding vector(1536) -- khớp số chiều của mô hình embedding của bạn
);
-- sau khi bạn có dữ liệu, xây một chỉ mục cho tìm kiếm nhanh:
CREATE INDEX ON memory USING hnsw (embedding vector_cosine_ops);
Agent của bạn chèn content + embedding của nó, rồi truy vấn với ORDER BY embedding <=> $query_embedding LIMIT 5 để kéo các bộ nhớ gần nhất. Đó là toàn bộ vòng lặp.
Thích Qdrant? Nó là một container Docker đơn phơi bày một API HTTP/gRPC; bạn tạo một collection với kích cỡ vector của bạn và upsert các điểm. Cùng ý tưởng, engine chuyên dụng.
Nó có thể chia sẻ một cỗ máy với agent không?
Có — cho các store bộ nhớ nhỏ-đến-vừa, chạy vector DB trên cùng VPS với agent. Nó đơn giản hơn và độ trễ về cơ bản bằng không. Tách chúng ra các máy chủ riêng chỉ khi một cái bắt đầu chen cái kia ra khỏi RAM. Đó là một quyết định sau, vấn-đề-đáng-có, không phải một cái ngày đầu.
Các lưu ý trung thực
- RAM là bức tường, và nó im lặng. Tìm kiếm giữ nhanh cho tới khi chỉ mục không còn vừa trong bộ nhớ, rồi nó xuống cấp. Xem bộ nhớ và đổi kích cỡ trước khi nó cắn — đừng chờ các truy vấn chậm nói cho bạn.
- Các embedding tốn token để tạo. Mỗi tài liệu bạn embed là một lệnh gọi API tới một mô hình embedding. Store rẻ để host; tạo các vector là chi phí định kỳ — liên quan tới chạy một agent thực sự tốn gì.
- Sao lưu nó. Bộ nhớ của agent bạn là dữ liệu như bất kỳ cái nào khác. Nếu nó quan trọng, snapshot nó.
Trong đó, một vector store tự host là một cách sạch để cho một agent bộ nhớ bền bỉ mà không giao dữ liệu riêng tư của bạn cho một bên thứ ba. Bắt đầu với pgvector trên một cỗ máy 2 GB, để mắt tới RAM, và lớn lên thành Qdrant hoặc một gói lớn hơn chỉ khi các con số bảo bạn.
Bình luận
Chưa có bình luận nào. Hãy là người đầu tiên.