feat: Qdrant Vector index support (#221)

This PR adds support for Qdrant - https://qdrant.tech/ to be used as a vector memory.

I've unit-tested the methods to confirm that they work as intended.

To run Qdrant

```
docker run -p 6333:6333 qdrant/qdrant
```
This commit is contained in:
Anush 2024-10-23 01:20:19 +05:30 committed by GitHub
parent 668a495aba
commit 4c3d33e6f4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 242 additions and 7 deletions

View file

@ -140,7 +140,9 @@ class EmbeddingIndex(ABC):
raise NotImplementedError()
@abstractmethod
async def query(self, embedding: NDArray, k: int) -> QueryDocumentsResponse:
async def query(
self, embedding: NDArray, k: int, score_threshold: float
) -> QueryDocumentsResponse:
raise NotImplementedError()
@ -177,6 +179,7 @@ class BankWithIndex:
if params is None:
params = {}
k = params.get("max_chunks", 3)
score_threshold = params.get("score_threshold", 0.0)
def _process(c) -> str:
if isinstance(c, str):
@ -191,4 +194,4 @@ class BankWithIndex:
model = get_embedding_model(self.bank.embedding_model)
query_vector = model.encode([query_str])[0].astype(np.float32)
return await self.index.query(query_vector, k)
return await self.index.query(query_vector, k, score_threshold)