1.5 KiB
1.5 KiB
VectorDB Integration
GeneralBots uses VectorDB as the vector database for storing and searching embeddings. The Rust client for the configured VectorDB is used to communicate with the service.
Configuration
The connection is configured via environment variables:
VECTORDB_URL=http://localhost:6333
VECTORDB_API_KEY=your-api-key # optional
These values are read at startup and passed to the VectorDBClient.
Collection Mapping
Each .gbkb collection maps to a VectorDB collection with the same name. For example, a knowledge base named company-policies becomes a VectorDB collection company-policies.
Operations
- Insert – Performed during indexing (see Chapter 03).
- Search – Executed by the
FINDkeyword, which sends a query vector and retrieves the top‑k nearest neighbors. - Delete/Update – When a document is removed or re‑indexed, the corresponding vectors are deleted and replaced.
Performance Tips
- Keep the number of vectors per collection reasonable (tens of thousands) for optimal latency.
- Adjust VectorDB’s
hnswparameters inVectorDBClient::newif you need higher recall. - Use the
FILTERoption to restrict searches by metadata (e.g., source file).
Example FIND Usage
USE_KB "company-policies"
FIND "vacation policy" INTO RESULT
TALK RESULT
The keyword internally:
- Generates an embedding for the query string.
- Calls VectorDB’s
searchAPI. - Returns the most relevant chunk as
RESULT.