Skip to content

Support vector-store layer & add a vectordb support #239

@imbajin

Description

@imbajin

Introduce a vector storage abstraction interface for the project. (Currently we only support faiss as the embedding engine)

The first step will focus on implementing encapsulated support for one standalone vector database (e.g., Qdrant, Chroma, or Milvus). This interface aims to abstract the underlying vector database, allowing for smooth future expansion to support other backends such as.

It should also enable easy and quick switching between different implementations to handle growing data volumes and more complex application scenarios, while maintaining a lightweight and simple interface.

Could refer:

Let LLM 🤖 generate a simple diagram, where faiss is already built-in, for general reference only (no need to copy it:)

classDiagram
    direction LR

    class Application {
        +useVectorStore()
    }

    class VectorStoreInterface {
        <<Interface>>
        +add_vectors(vectors, ids)
        +search(query_vector, k)
        +delete_vectors(ids)
        +update_vectors(vectors, ids)
    }

    class FaissVectorStore {
        +add_vectors(vectors, ids)
        +search(query_vector, k)
        +delete_vectors(ids)
        +update_vectors(vectors, ids)
    }

    class QdrantVectorStore {
        <<Future>>
        +add_vectors(vectors, ids)
        +search(query_vector, k)
        +delete_vectors(ids)
        +update_vectors(vectors, ids)
    }

    class ChromaVectorStore {
        <<Future>>
        +add_vectors(vectors, ids)
        +search(query_vector, k)
        +delete_vectors(ids)
        +update_vectors(vectors, ids)
    }

    class MilvusVectorStore {
        <<Future>>
        +add_vectors(vectors, ids)
        +search(query_vector, k)
        +delete_vectors(ids)
        +update_vectors(vectors, ids)
    }

    Application --> VectorStoreInterface : uses
    VectorStoreInterface <|-- FaissVectorStore : implements (Initial)
    VectorStoreInterface <|-- QdrantVectorStore : implements
    VectorStoreInterface <|-- ChromaVectorStore : implements
    VectorStoreInterface <|-- MilvusVectorStore : implements

    note for FaissVectorStore "第一阶段实现"
Loading

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions