Skip to content

ontocast.tool.vector_store.factory

Factory for vector store backend selection.

create_vector_store_manager(tool_config, embedding, sparse_embedding)

Return a vector store manager when a backend URI is configured.

Source code in ontocast/tool/vector_store/factory.py
def create_vector_store_manager(
    tool_config: ToolConfig,
    embedding: EmbeddingTool,
    sparse_embedding: FastembedBm25SparseTool,
) -> VectorStoreManager | None:
    """Return a vector store manager when a backend URI is configured."""
    if tool_config.qdrant.uri:
        q_vs = tool_config.qdrant.vector_size
        emb_dim = tool_config.embedding.dimension
        if q_vs is not None and q_vs != emb_dim:
            raise ValueError(
                "QdrantConfig.vector_size must match "
                "EmbeddingConfig.dimension when set "
                f"(got vector_size={q_vs}, embedding.dimension={emb_dim})"
            )
        return QdrantVectorStoreManager(
            store_config=tool_config.vector_store,
            qdrant_config=tool_config.qdrant,
            embedding=embedding,
            sparse_embedding=sparse_embedding,
        )
    if tool_config.lancedb.enabled:
        return LanceDBVectorStoreManager(
            store_config=tool_config.vector_store,
            lancedb_config=tool_config.lancedb,
            embedding=embedding,
            sparse_embedding=sparse_embedding,
        )
    return None