Tìm kiếm ngữ nghĩa trong Obsidian: Cách một chỉ mục vector cục bộ hoạt động mà không cần cơ sở dữ liệu vector
OpenAI
Ollama
OpenRouter
Bài viết giải thích cách triển khai tìm kiếm ngữ nghĩa trong plugin Vault Audit AI của Obsidian. Tác giả mô tả cách các ghi chú Markdown được chuyển đổi thành vector, lý do hệ thống tránh sử dụng cơ sở dữ liệu vector riêng biệt và cách lập chỉ mục gia tăng xử lý các thay đổi một cách hiệu quả.
Tác giả của Vault Audit AI, một plugin cộng đồng dành cho Obsidian, đã bổ sung chức năng tìm kiếm ngữ nghĩa (semantic search) để khắc phục những hạn chế của tìm kiếm toàn văn (full-text search) trong việc ghi chú. Plugin này cho phép người dùng tìm kiếm ghi chú theo ý nghĩa, không chỉ dựa trên việc khớp từ chính xác. Chỉ mục (index) được lưu trữ ngay trong vault của Obsidian mà không cần đến cơ sở dữ liệu vector ngoài hay máy chủ riêng.
Hệ thống hoạt động bằng cách chia các ghi chú Markdown thành từng đoạn nhỏ, sau đó nhúng (embedding) mỗi đoạn bằng một mô hình, rồi lưu các vector vào một LocalVectorStore tùy chỉnh. Bộ chia đoạn (chunker) tuân theo các ranh giới tự nhiên của văn bản như tiêu đề và danh sách, đồng thời duy trì các thông tin mô tả (metadata) như đường dẫn tiêu đề, mã băm nội dung (content hash) và vị trí gốc trong văn bản (source offsets).
Các nhà cung cấp dịch vụ nhúng bao gồm OpenRouter, các API tương thích với OpenAI, và Ollama, tất cả đều được thống nhất thông qua một giao diện chung. LocalVectorStore sử dụng một tệp manifest cùng một tệp nhị phân để lưu vector, với cơ chế ghi dữ liệu nguyên tử (atomic writes) nhằm bảo đảm tính nhất quán. Việc lập chỉ mục gia tăng (incremental indexing) so sánh metadata và mã băm nội dung để tránh phải tính lại embedding cho những đoạn không thay đổi.
Tác giả nhấn mạnh tầm quan trọng của việc tách biệt các thành phần trong hệ thống, và đề cập đến những khó khăn liên quan đến các tình huống tranh chấp bất đồng bộ (asynchronous races) — những lỗi này vẫn xuất hiện dù các bài kiểm thử (tests) đã được thông qua.
Nguồn: Habr — хаб ИИ —
bản gốc
