Documentation
¶
Overview ¶
Package index defines the candidate-retrieval boundary used by Reliquary.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrDimensionMismatch = errors.New("reliquary index: vector dimension mismatch")
ErrDimensionMismatch reports incompatible query and indexed vector spaces.
var ErrDuplicateDocumentID = errors.New("reliquary index: duplicate document ID")
ErrDuplicateDocumentID reports a replacement batch that names one document more than once.
var ErrIdentityMismatch = errors.New("reliquary index: identity mismatch")
ErrIdentityMismatch reports an attempt to mix different embedding or chunking spaces in one index.
var ErrInvalidDocumentID = errors.New("reliquary index: document ID must not be blank")
ErrInvalidDocumentID reports a blank document identifier.
var ErrResultIDConflict = errors.New("reliquary index: replacement result ID conflict")
ErrResultIDConflict reports a replacement result ID that is duplicated in the batch or already belongs to a retained document.
Functions ¶
This section is empty.
Types ¶
type DocumentReplacement ¶ added in v0.9.0
DocumentReplacement atomically replaces every indexed result whose Result.DocumentID equals DocumentID. Result ID naming does not imply ownership. An empty Results slice deletes the document.
type Index ¶
type Index interface {
Upsert(ctx context.Context, items []*retrieval.Result) error
// ReplaceDocuments applies the complete slice atomically: either every
// document revision is replaced or none is. Empty Results deletes that
// document. Result IDs must be unique within the batch and must not collide
// with retained documents; implementations return ErrResultIDConflict when
// either invariant is violated. Replacement never changes the established
// index identity or vector dimension; Reset is the only escape hatch.
ReplaceDocuments(ctx context.Context, replacements []DocumentReplacement) error
// DeleteDocument removes only results whose Result.DocumentID exactly equals
// documentID. Result ID naming does not imply ownership. It rejects empty or
// whitespace-only IDs with ErrInvalidDocumentID and leaves the index unchanged.
DeleteDocument(ctx context.Context, documentID string) error
Search(ctx context.Context, query IndexQuery) ([]*retrieval.Result, error)
}
Index stores embedded chunks and retrieves a bounded candidate set. Non-empty result embeddings and query vectors must contain only finite values; empty embeddings remain valid for lexical-only results. The first non-nil result establishes its identity and the first embedded result establishes its vector dimension. Implementations must preserve that space across deletes and replacements until Resetter.Reset succeeds.
type IndexQuery ¶
type IndexQuery struct {
Identity string
Text string
Vector []float32
Limit int
Filter map[string]any
}
IndexQuery describes candidate retrieval. Filter values are JSON scalars. Metadata keys must be present to match; explicit nil matches only JSON null. Strings and booleans are type-exact, while finite JSON numbers compare by exact numeric value across accepted Go numeric types and json.Number. The reserved id, document_id, and filename fields match strings only. A zero Limit leaves the candidate count implementation-defined or unbounded. A query may populate both Text and Vector for mixed retrieval, only Vector for a vector lane, or only Text for a lexical lane. Index implementations may route those shapes independently; a text-only query does not imply any particular lexical engine or scoring algorithm.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package indextest provides a reusable contract suite for Index implementations.
|
Package indextest provides a reusable contract suite for Index implementations. |
|
Package inmem provides Reliquary's concurrency-safe in-process index.
|
Package inmem provides Reliquary's concurrency-safe in-process index. |