Skip to content

Capabilities

Capability protocols for datastore interface.

This package defines the core capability protocols that all datastores can implement. Each protocol represents a specific set of functionality that datastores can opt-in to provide.

Authors

Kadek Denaya (kadek.d.r.diana@gdplabs.id)

References

NONE

CacheCapability

Bases: Protocol

Protocol for caching operations with advanced matching.

This protocol defines the interface for datastores that support caching operations. This includes storage, retrieval with different matching strategies, and various eviction policies.

create(key, value, metadata=None, **kwargs) async

Insert a value into cache with optional metadata.

Parameters:

Name Type Description Default
key str

Cache key.

required
value Any

Value to cache.

required
metadata dict[str, Any] | None

Optional metadata for advanced matching. Defaults to None.

None
**kwargs

Datastore-specific parameters.

{}

delete(key, filters=None) async

Delete entries by key match with optional filters.

Parameters:

Name Type Description Default
key str | list[str]

Single key or list of keys to delete.

required
filters QueryFilter | None

Query filters to apply. Defaults to None.

None

delete_expired(now=None) async

Delete expired entries and enforce size limits.

Parameters:

Name Type Description Default
now datetime | None

Current timestamp for expiration checks. Defaults to None, in which case the current timestamp is used.

None

delete_lfu(num_entries) async

Delete least frequently used entries.

Parameters:

Name Type Description Default
num_entries int

Number of entries to delete.

required

delete_lru(num_entries) async

Delete least recently used entries.

Parameters:

Name Type Description Default
num_entries int

Number of entries to delete.

required

retrieve_exact(key, filters=None, **kwargs) async

Retrieve exact key match from cache with optional filters.

Parameters:

Name Type Description Default
key str

Cache key to retrieve.

required
filters QueryFilter | None

Query filters to apply. Defaults to None.

None
**kwargs

Datastore-specific parameters.

{}

Returns:

Name Type Description
Any Any

Cached value if found, None otherwise.

retrieve_fuzzy(key, max_distance=DEFAULT_FUZZY_MATCH_MAX_DISTANCE, filters=None, **kwargs) async

Find fuzzy matches for key within distance threshold.

Parameters:

Name Type Description Default
key str

Base key for fuzzy matching.

required
max_distance int

Maximum edit distance for matches. Defaults to 2.

DEFAULT_FUZZY_MATCH_MAX_DISTANCE
filters QueryFilter | None

Query filters to apply. Defaults to None.

None
**kwargs

Datastore-specific parameters.

{}

Returns:

Name Type Description
Any Any

Best matching value or None.

retrieve_semantic(key, min_similarity=0.8, filters=None, **kwargs) async

Find semantically similar matches using embeddings.

Parameters:

Name Type Description Default
key str

Base key for semantic matching.

required
min_similarity float

Minimum similarity threshold (0.0-1.0). Defaults to 0.8.

0.8
filters QueryFilter | None

Query filters to apply. Defaults to None.

None
**kwargs

Datastore-specific parameters.

{}

Returns:

Name Type Description
Any Any

Best matching value or None.

update(key, value, filters=None) async

Update an entry in the cache with optional filters.

Parameters:

Name Type Description Default
key str

Cache key to update.

required
value Any

Value to update.

required
filters QueryFilter | None

Query filters to apply. Defaults to None.

None

FulltextCapability

Bases: Protocol

Protocol for full-text search and document operations.

This protocol defines the interface for datastores that support CRUD operations and flexible querying mechanisms for document data.

clear(**kwargs) async

Clear all records from the datastore.

Parameters:

Name Type Description Default
**kwargs

Datastore-specific parameters.

{}

create(data, **kwargs) async

Create new records in the datastore.

Parameters:

Name Type Description Default
data Chunk | list[Chunk]

Data to create (single item or collection).

required
**kwargs

Datastore-specific parameters.

{}

delete(filters=None, **kwargs) async

Delete records from the datastore.

Parameters:

Name Type Description Default
filters QueryFilter | None

Filters to select records to delete. Defaults to None, in which case no operation is performed (no-op).

None
**kwargs

Datastore-specific parameters.

{}

retrieve(filters=None, options=None, **kwargs) async

Read records from the datastore with optional filtering.

Parameters:

Name Type Description Default
filters QueryFilter | None

Query filters to apply. Defaults to None.

None
options QueryOptions | None

Query options like limit and sorting. Defaults to None.

None
**kwargs

Datastore-specific parameters.

{}

Returns:

Type Description
list[Chunk]

list[Chunk]: Query results.

update(update_values, filters=None, **kwargs) async

Update existing records in the datastore.

Parameters:

Name Type Description Default
update_values dict[str, Any]

Values to update.

required
filters QueryFilter | None

Filters to select records to update. Defaults to None.

None
**kwargs

Datastore-specific parameters.

{}

GraphCapability

Bases: Protocol

Protocol for graph database operations.

This protocol defines the interface for datastores that support graph-based data operations. This includes node and relationship management as well as graph queries.

delete_node(label, identifier_key, identifier_value) async

Delete a node and its relationships.

Parameters:

Name Type Description Default
label str

Node label/type.

required
identifier_key str

Node identifier key.

required
identifier_value str

Node identifier value.

required

Returns:

Name Type Description
Any Any

Deletion result information.

delete_relationship(node_source_key, node_source_value, relation, node_target_key, node_target_value) async

Delete a relationship between nodes.

Parameters:

Name Type Description Default
node_source_key str

Source node identifier key.

required
node_source_value str

Source node identifier value.

required
relation str

Relationship type.

required
node_target_key str

Target node identifier key.

required
node_target_value str

Target node identifier value.

required

Returns:

Name Type Description
Any Any

Deletion result information.

retrieve(query, parameters=None) async

Retrieve data from the graph with specific query.

Parameters:

Name Type Description Default
query str

Query to retrieve data from the graph.

required
parameters dict[str, Any] | None

Query parameters. Defaults to None.

None

Returns:

Type Description
list[dict[str, Any]]

list[dict[str, Any]]: Query results as list of dictionaries.

upsert_node(label, identifier_key, identifier_value, properties=None) async

Create or update a node in the graph.

Parameters:

Name Type Description Default
label str

Node label/type.

required
identifier_key str

Key field for node identification.

required
identifier_value str

Value for node identification.

required
properties dict[str, Any] | None

Additional node properties. Defaults to None.

None

Returns:

Name Type Description
Any Any

Created/updated node information.

upsert_relationship(node_source_key, node_source_value, relation, node_target_key, node_target_value, properties=None) async

Create or update a relationship between nodes.

Parameters:

Name Type Description Default
node_source_key str

Source node identifier key.

required
node_source_value str

Source node identifier value.

required
relation str

Relationship type.

required
node_target_key str

Target node identifier key.

required
node_target_value str

Target node identifier value.

required
properties dict[str, Any] | None

Relationship properties. Defaults to None.

None

Returns:

Name Type Description
Any Any

Created/updated relationship information.

VectorCapability

Bases: Protocol

Protocol for vector similarity search operations.

This protocol defines the interface for datastores that support vector-based retrieval operations. This includes similarity search, ID-based lookup as well as vector storage.

clear() async

Clear all records from the datastore.

create(data) async

Add chunks to the vector store with automatic embedding generation.

Parameters:

Name Type Description Default
data Chunk | list[Chunk]

Single chunk or list of chunks to add.

required

create_from_vector(chunk_vectors, **kwargs) async

Add pre-computed vectors directly.

Parameters:

Name Type Description Default
chunk_vectors list[tuple[Chunk, Vector]]

List of tuples containing chunks and their corresponding vectors.

required
**kwargs Any

Datastore-specific parameters.

{}

delete(filters=None, **kwargs) async

Delete records from the datastore.

Parameters:

Name Type Description Default
filters QueryFilter | None

Filters to select records to delete. Defaults to None.

None
**kwargs Any

Datastore-specific parameters

{}
Note

If filters is None, no operation is performed (no-op).

retrieve(query, filters=None, options=None, **kwargs) async

Read records from the datastore using text-based similarity search with optional filtering.

Parameters:

Name Type Description Default
query str

Input text to embed and search with.

required
filters QueryFilter | None

Query filters to apply. Defaults to None.

None
options QueryOptions | None

Query options like limit and sorting. Defaults to None.

None
**kwargs Any

Datastore-specific parameters.

{}

Returns:

Type Description
list[Chunk]

list[Chunk]: Query results.

retrieve_by_vector(vector, filters=None, options=None, **kwargs) async

Direct vector similarity search.

Parameters:

Name Type Description Default
vector Vector

Query embedding vector.

required
filters QueryFilter | None

Query filters to apply. Defaults to None.

None
options QueryOptions | None

Query options like limit and sorting. Defaults to None.

None
**kwargs Any

Datastore-specific parameters.

{}

Returns:

Type Description
list[Chunk]

list[Chunk]: List of chunks ordered by similarity score.

update(update_values, filters=None, **kwargs) async

Update existing records in the datastore.

Parameters:

Name Type Description Default
update_values dict[str, Any]

Values to update.

required
filters QueryFilter | None

Filters to select records to update. Defaults to None.

None
**kwargs Any

Datastore-specific parameters.

{}