Spaces:
Sleeping
Sleeping
Upload vectordatabase.py
Browse files
aimakerspace/vectordatabase.py
CHANGED
@@ -14,9 +14,9 @@ def cosine_similarity(vector_a: np.array, vector_b: np.array) -> float:
|
|
14 |
|
15 |
|
16 |
class VectorDatabase:
|
17 |
-
def __init__(self, embedding_model
|
18 |
self.vectors = defaultdict(np.array)
|
19 |
-
self.embedding_model = embedding_model
|
20 |
|
21 |
def insert(self, key: str, vector: np.array) -> None:
|
22 |
self.vectors[key] = vector
|
@@ -40,7 +40,8 @@ class VectorDatabase:
|
|
40 |
distance_measure: Callable = cosine_similarity,
|
41 |
return_as_text: bool = False,
|
42 |
) -> List[Tuple[str, float]]:
|
43 |
-
query_vector = self.embedding_model.get_embedding(query_text)
|
|
|
44 |
results = self.search(query_vector, k, distance_measure)
|
45 |
return [result[0] for result in results] if return_as_text else results
|
46 |
|
@@ -48,7 +49,8 @@ class VectorDatabase:
|
|
48 |
return self.vectors.get(key, None)
|
49 |
|
50 |
async def abuild_from_list(self, list_of_text: List[str]) -> "VectorDatabase":
|
51 |
-
embeddings = await self.embedding_model.async_get_embeddings(list_of_text)
|
|
|
52 |
for text, embedding in zip(list_of_text, embeddings):
|
53 |
self.insert(text, np.array(embedding))
|
54 |
return self
|
|
|
14 |
|
15 |
|
16 |
class VectorDatabase:
|
17 |
+
def __init__(self, embedding_model):
|
18 |
self.vectors = defaultdict(np.array)
|
19 |
+
self.embedding_model = embedding_model
|
20 |
|
21 |
def insert(self, key: str, vector: np.array) -> None:
|
22 |
self.vectors[key] = vector
|
|
|
40 |
distance_measure: Callable = cosine_similarity,
|
41 |
return_as_text: bool = False,
|
42 |
) -> List[Tuple[str, float]]:
|
43 |
+
# query_vector = self.embedding_model.get_embedding(query_text)
|
44 |
+
query_vector = self.embedding_model.embed_query(query_text)
|
45 |
results = self.search(query_vector, k, distance_measure)
|
46 |
return [result[0] for result in results] if return_as_text else results
|
47 |
|
|
|
49 |
return self.vectors.get(key, None)
|
50 |
|
51 |
async def abuild_from_list(self, list_of_text: List[str]) -> "VectorDatabase":
|
52 |
+
# embeddings = await self.embedding_model.async_get_embeddings(list_of_text)
|
53 |
+
embeddings = await self.embedding_model.aembed_documents(list_of_text)
|
54 |
for text, embedding in zip(list_of_text, embeddings):
|
55 |
self.insert(text, np.array(embedding))
|
56 |
return self
|