sharedkernel 1.0.0__tar.gz → 1.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/PKG-INFO +3 -1
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/setup.py +3 -3
- sharedkernel-1.1.0/sharedkernel/database/__init__.py +2 -0
- sharedkernel-1.0.0/sharedkernel/database/repository_base.py → sharedkernel-1.1.0/sharedkernel/database/mongo_repository_base.py +1 -1
- sharedkernel-1.1.0/sharedkernel/database/vector_database_repository/__init__.py +3 -0
- sharedkernel-1.1.0/sharedkernel/database/vector_database_repository/chroma_startegy.py +39 -0
- sharedkernel-1.1.0/sharedkernel/database/vector_database_repository/milvus_strategy.py +50 -0
- sharedkernel-1.1.0/sharedkernel/database/vector_database_repository/vector_database_repository.py +28 -0
- sharedkernel-1.1.0/sharedkernel/database/vector_database_repository/vector_database_strategy.py +22 -0
- sharedkernel-1.1.0/sharedkernel/enum/__init__.py +2 -0
- sharedkernel-1.1.0/sharedkernel/enum/vector_database_type.py +5 -0
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/sharedkernel.egg-info/PKG-INFO +3 -1
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/sharedkernel.egg-info/SOURCES.txt +10 -3
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/sharedkernel.egg-info/requires.txt +2 -0
- sharedkernel-1.0.0/test/test.py +0 -12
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/README.md +0 -0
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/setup.cfg +0 -0
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/sharedkernel/common.py +0 -0
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/sharedkernel/config.py +0 -0
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/sharedkernel/database/adapter.py +0 -0
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/sharedkernel/enum/error_code.py +0 -0
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/sharedkernel/exception/__init__.py +0 -0
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/sharedkernel/exception/exception.py +0 -0
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/sharedkernel/exception/exception_handlers.py +0 -0
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/sharedkernel/jwt_service.py +0 -0
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/sharedkernel/objects/__init__.py +0 -0
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/sharedkernel/objects/base_document.py +0 -0
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/sharedkernel/objects/jwt_model.py +0 -0
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/sharedkernel/objects/result.py +0 -0
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/sharedkernel/string_extentions.py +0 -0
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/sharedkernel.egg-info/dependency_links.txt +0 -0
- {sharedkernel-1.0.0 → sharedkernel-1.1.0}/sharedkernel.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sharedkernel
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.1.0
|
|
4
4
|
Summary: sharekernel is an shared package between all python projects
|
|
5
5
|
Author: Smilinno
|
|
6
6
|
Requires-Dist: numpy
|
|
@@ -8,3 +8,5 @@ Requires-Dist: requests
|
|
|
8
8
|
Requires-Dist: pymongo
|
|
9
9
|
Requires-Dist: fastapi==0.89.1
|
|
10
10
|
Requires-Dist: PyJWT
|
|
11
|
+
Requires-Dist: pymilvus
|
|
12
|
+
Requires-Dist: chromadb
|
|
@@ -4,10 +4,10 @@ setup(
|
|
|
4
4
|
# Needed to silence warnings (and to be a worthwhile package)
|
|
5
5
|
name='sharedkernel',
|
|
6
6
|
author='Smilinno',
|
|
7
|
-
packages=['sharedkernel','sharedkernel.database','sharedkernel.enum','sharedkernel.exception','sharedkernel.objects'],
|
|
7
|
+
packages=['sharedkernel','sharedkernel.database','sharedkernel.database.vector_database_repository','sharedkernel.enum','sharedkernel.exception','sharedkernel.objects'],
|
|
8
8
|
# Needed for dependencies
|
|
9
|
-
install_requires=['numpy','requests','pymongo','fastapi==0.89.1','PyJWT'],
|
|
9
|
+
install_requires=['numpy','requests','pymongo','fastapi==0.89.1','PyJWT','pymilvus','chromadb'],
|
|
10
10
|
# *strongly* suggested for sharing
|
|
11
|
-
version='1.
|
|
11
|
+
version='1.1.0',
|
|
12
12
|
description='sharekernel is an shared package between all python projects',
|
|
13
13
|
)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import chromadb
|
|
2
|
+
import numpy as np
|
|
3
|
+
from chromadb.config import Settings
|
|
4
|
+
from .vector_database_strategy import VectorDatabaseStrategy
|
|
5
|
+
import uuid
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ChromaStrategy(VectorDatabaseStrategy):
|
|
9
|
+
def __init__(self, collection_name: str):
|
|
10
|
+
self.collection_name = collection_name
|
|
11
|
+
self.collection = None
|
|
12
|
+
|
|
13
|
+
def connect(self, host: str = "localhost", port: int = 8000):
|
|
14
|
+
client = chromadb.Client(
|
|
15
|
+
Settings(
|
|
16
|
+
chroma_api_impl="rest",
|
|
17
|
+
chroma_server_host=host,
|
|
18
|
+
chroma_server_http_port=port,
|
|
19
|
+
)
|
|
20
|
+
)
|
|
21
|
+
self.collection = client.get_or_create_collection(self.collection_name)
|
|
22
|
+
|
|
23
|
+
def insert_vector(self, vector: np.ndarray, metadata: dict) -> str:
|
|
24
|
+
id = str(uuid.uuid4())
|
|
25
|
+
self.collection.upsert(ids=id, embeddings=vector.tolist(), metadatas=[metadata])
|
|
26
|
+
|
|
27
|
+
return id
|
|
28
|
+
|
|
29
|
+
def search_vector(self, vector: np.ndarray, top_k: int):
|
|
30
|
+
results = self.collection.query(vectors=[vector.tolist()], n_results=top_k)
|
|
31
|
+
return results
|
|
32
|
+
|
|
33
|
+
def get_vector_by_id(self, id: str):
|
|
34
|
+
result = self.collection.get(ids=id)
|
|
35
|
+
|
|
36
|
+
return result
|
|
37
|
+
|
|
38
|
+
def delete_vector(self, id: str):
|
|
39
|
+
self.collection.delete(ids=id)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
from pymilvus import connections, Collection, FieldSchema, CollectionSchema, DataType
|
|
3
|
+
|
|
4
|
+
from .vector_database_strategy import VectorDatabaseStrategy
|
|
5
|
+
import uuid
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class MilvusStrategy(VectorDatabaseStrategy):
|
|
9
|
+
def __init__(self, collection_name: str):
|
|
10
|
+
self.collection_name = collection_name
|
|
11
|
+
self.collection = None
|
|
12
|
+
|
|
13
|
+
def connect(self, host: str = "localhost", port: str = "19530"):
|
|
14
|
+
connections.connect(alias="default", host=host, port=port)
|
|
15
|
+
# Define fields
|
|
16
|
+
fields = [
|
|
17
|
+
FieldSchema(
|
|
18
|
+
name="id", dtype=DataType.VARCHAR, max_length=36, is_primary=True
|
|
19
|
+
),
|
|
20
|
+
FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=128),
|
|
21
|
+
]
|
|
22
|
+
schema = CollectionSchema(
|
|
23
|
+
fields, description="Vector collection", enable_dynamic_field=True
|
|
24
|
+
)
|
|
25
|
+
self.collection = Collection(name=self.collection_name, schema=schema)
|
|
26
|
+
|
|
27
|
+
if not self.collection.has_index():
|
|
28
|
+
self.collection.create_index(field_name="vector", index_params={"index_type": "IVF_FLAT", "metric_type": "L2", "params": {"nlist": 128}})
|
|
29
|
+
|
|
30
|
+
self.collection.load()
|
|
31
|
+
|
|
32
|
+
def insert_vector(self, vector: np.ndarray, metadata: dict) -> str:
|
|
33
|
+
id = str(uuid.uuid4())
|
|
34
|
+
self.collection.insert(data={"id": id, "vector": vector.tolist()})
|
|
35
|
+
|
|
36
|
+
return id
|
|
37
|
+
|
|
38
|
+
def search_vector(self, vector: np.ndarray, top_k: int):
|
|
39
|
+
search_params = {"metric_type": "L2", "params": {"nprobe": 10}}
|
|
40
|
+
results = self.collection.search(
|
|
41
|
+
[vector.tolist()], "vector", search_params, top_k
|
|
42
|
+
)
|
|
43
|
+
return results
|
|
44
|
+
|
|
45
|
+
def get_vector_by_id(self, id: str):
|
|
46
|
+
result = self.collection.query(expr=f"id=='{id}'",output_fields=["vector"])
|
|
47
|
+
return result
|
|
48
|
+
|
|
49
|
+
def delete_vector(self, id: str):
|
|
50
|
+
self.collection.delete(expr=f"id=='{id}'")
|
sharedkernel-1.1.0/sharedkernel/database/vector_database_repository/vector_database_repository.py
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
from .vector_database_strategy import VectorDatabaseStrategy
|
|
3
|
+
from .milvus_strategy import MilvusStrategy
|
|
4
|
+
from .chroma_startegy import ChromaStrategy
|
|
5
|
+
from sharedkernel.enum.vector_database_type import VectorDatabaseType
|
|
6
|
+
|
|
7
|
+
class VectorRepository:
|
|
8
|
+
def __init__(self, database_type: VectorDatabaseType, collection_name: str, **connection_params):
|
|
9
|
+
self.strategy = self._get_strategy(database_type, collection_name)
|
|
10
|
+
self.strategy.connect(**connection_params)
|
|
11
|
+
|
|
12
|
+
def _get_strategy(self, database_type: VectorDatabaseType, collection_name: str) -> VectorDatabaseStrategy:
|
|
13
|
+
if database_type == VectorDatabaseType.MILVUS:
|
|
14
|
+
return MilvusStrategy(collection_name)
|
|
15
|
+
else:
|
|
16
|
+
return ChromaStrategy(collection_name)
|
|
17
|
+
|
|
18
|
+
def add_vector(self, vector: np.ndarray, metadata: dict) -> str:
|
|
19
|
+
return self.strategy.insert_vector(vector, metadata)
|
|
20
|
+
|
|
21
|
+
def find_similar_vectors(self, vector: np.ndarray, top_k: int):
|
|
22
|
+
return self.strategy.search_vector(vector, top_k)
|
|
23
|
+
|
|
24
|
+
def remove_vector(self, id: str):
|
|
25
|
+
self.strategy.delete_vector(id)
|
|
26
|
+
|
|
27
|
+
def get_vector_by_id(self, id: str):
|
|
28
|
+
return self.strategy.get_vector_by_id(id)
|
sharedkernel-1.1.0/sharedkernel/database/vector_database_repository/vector_database_strategy.py
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
import numpy as np
|
|
3
|
+
|
|
4
|
+
class VectorDatabaseStrategy(ABC):
|
|
5
|
+
@abstractmethod
|
|
6
|
+
def connect(self, **kwargs):
|
|
7
|
+
pass
|
|
8
|
+
@abstractmethod
|
|
9
|
+
def insert_vector(self, vector: np.ndarray, metadata: dict) -> str:
|
|
10
|
+
pass
|
|
11
|
+
|
|
12
|
+
@abstractmethod
|
|
13
|
+
def search_vector(self, vector: np.ndarray, top_k: int):
|
|
14
|
+
pass
|
|
15
|
+
|
|
16
|
+
@abstractmethod
|
|
17
|
+
def delete_vector(self, id: str):
|
|
18
|
+
pass
|
|
19
|
+
|
|
20
|
+
@abstractmethod
|
|
21
|
+
def get_vector_by_id(self, id: str):
|
|
22
|
+
pass
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sharedkernel
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.1.0
|
|
4
4
|
Summary: sharekernel is an shared package between all python projects
|
|
5
5
|
Author: Smilinno
|
|
6
6
|
Requires-Dist: numpy
|
|
@@ -8,3 +8,5 @@ Requires-Dist: requests
|
|
|
8
8
|
Requires-Dist: pymongo
|
|
9
9
|
Requires-Dist: fastapi==0.89.1
|
|
10
10
|
Requires-Dist: PyJWT
|
|
11
|
+
Requires-Dist: pymilvus
|
|
12
|
+
Requires-Dist: chromadb
|
|
@@ -9,14 +9,21 @@ sharedkernel.egg-info/SOURCES.txt
|
|
|
9
9
|
sharedkernel.egg-info/dependency_links.txt
|
|
10
10
|
sharedkernel.egg-info/requires.txt
|
|
11
11
|
sharedkernel.egg-info/top_level.txt
|
|
12
|
+
sharedkernel/database/__init__.py
|
|
12
13
|
sharedkernel/database/adapter.py
|
|
13
|
-
sharedkernel/database/
|
|
14
|
+
sharedkernel/database/mongo_repository_base.py
|
|
15
|
+
sharedkernel/database/vector_database_repository/__init__.py
|
|
16
|
+
sharedkernel/database/vector_database_repository/chroma_startegy.py
|
|
17
|
+
sharedkernel/database/vector_database_repository/milvus_strategy.py
|
|
18
|
+
sharedkernel/database/vector_database_repository/vector_database_repository.py
|
|
19
|
+
sharedkernel/database/vector_database_repository/vector_database_strategy.py
|
|
20
|
+
sharedkernel/enum/__init__.py
|
|
14
21
|
sharedkernel/enum/error_code.py
|
|
22
|
+
sharedkernel/enum/vector_database_type.py
|
|
15
23
|
sharedkernel/exception/__init__.py
|
|
16
24
|
sharedkernel/exception/exception.py
|
|
17
25
|
sharedkernel/exception/exception_handlers.py
|
|
18
26
|
sharedkernel/objects/__init__.py
|
|
19
27
|
sharedkernel/objects/base_document.py
|
|
20
28
|
sharedkernel/objects/jwt_model.py
|
|
21
|
-
sharedkernel/objects/result.py
|
|
22
|
-
test/test.py
|
|
29
|
+
sharedkernel/objects/result.py
|
sharedkernel-1.0.0/test/test.py
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
from fastapi import FastAPI,Depends
|
|
2
|
-
|
|
3
|
-
from sharedkernel import jwt_service
|
|
4
|
-
from sharedkernel.objects import JwtModel
|
|
5
|
-
from sharedkernel import config
|
|
6
|
-
app = FastAPI(title="Domain Apis",dependencies=[Depends(jwt_service.JWTBearer(JwtModel(secret_key=config.JWT_SECRETKEY,
|
|
7
|
-
algorithms=config.JWT_ALGORITHM,
|
|
8
|
-
audience=config.JWT_AUDIENCE,
|
|
9
|
-
issuer=config.JWT_ISSURE)))])
|
|
10
|
-
|
|
11
|
-
# history = api_client.bots()
|
|
12
|
-
# print("Chat history:", history)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|