Documentation
¶
Overview ¶
Package kb provides a knowledge base system for storing and searching documents.
Documents are chunked and embedded for hybrid search combining vector similarity and full-text search using Reciprocal Rank Fusion (RRF).
Index ¶
- type Document
- type KBStore
- func (s *KBStore) AddDocument(ctx context.Context, filePath, content string, metadata map[string]interface{}) error
- func (s *KBStore) CountDocuments(ctx context.Context) (int64, error)
- func (s *KBStore) DeleteDocument(ctx context.Context, filePath string) error
- func (s *KBStore) GetDocument(ctx context.Context, filePath string) (*Document, error)
- func (s *KBStore) ListDocuments(ctx context.Context, limit, offset int) ([]Document, error)
- func (s *KBStore) RebuildFTS(ctx context.Context) error
- func (s *KBStore) SearchDocuments(ctx context.Context, query string, limit int) ([]SearchResult, error)
- func (s *KBStore) SyncDirectory(ctx context.Context, dirPath string) error
- func (s *KBStore) UpdateDocument(ctx context.Context, filePath, content string, metadata map[string]interface{}) error
- type SearchResult
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Document ¶
type Document struct {
ID int64
FilePath string
Content string
Metadata map[string]interface{}
CreatedAt time.Time
UpdatedAt time.Time
}
Document represents a stored document in the knowledge base.
type KBStore ¶
type KBStore struct {
// contains filtered or unexported fields
}
KBStore manages knowledge base documents with chunking, embeddings, and hybrid search. It uses SQLite for storage with FTS5 for full-text search and in-memory vector search.
func NewKBStore ¶
NewKBStore creates a new KBStore instance.
Parameters:
- db: SQLite database connection
- embedder: Embedder for generating chunk embeddings
- chunkSize: Maximum chunk size in characters (0 = use default)
- chunkOverlap: Overlap between consecutive chunks (0 = use default)
func (*KBStore) AddDocument ¶
func (s *KBStore) AddDocument(ctx context.Context, filePath, content string, metadata map[string]interface{}) error
AddDocument adds a new document to the knowledge base. It chunks the content, generates embeddings, and updates the FTS index.
func (*KBStore) CountDocuments ¶
CountDocuments returns the total number of documents.
func (*KBStore) DeleteDocument ¶
DeleteDocument removes a document and all its chunks from the knowledge base.
func (*KBStore) GetDocument ¶
GetDocument retrieves a document by file path.
func (*KBStore) ListDocuments ¶
ListDocuments returns paginated documents.
func (*KBStore) RebuildFTS ¶
RebuildFTS rebuilds the FTS5 index from kb_chunks.
func (*KBStore) SearchDocuments ¶
func (s *KBStore) SearchDocuments(ctx context.Context, query string, limit int) ([]SearchResult, error)
SearchDocuments performs hybrid search combining vector similarity and FTS. Results are fused using Reciprocal Rank Fusion (RRF).
func (*KBStore) SyncDirectory ¶
SyncDirectory imports or syncs all .md files from a directory. Existing documents are updated, new files are added.