Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

maintain / upgrade pineone-client to v3 #1416

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ orjson==3.8.14
packaging==23.1
parse==1.19.0
Pillow==9.5.0
pinecone-client==2.2.1
pinecone-client==3.2.2
prompt-toolkit==3.0.38
psycopg2==2.9.6
pycparser==2.21
Expand Down
2 changes: 1 addition & 1 deletion superagi/vector_embeddings/pinecone.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import Any
from superagi.vector_embeddings.base import VectorEmbeddings

class Pinecone(VectorEmbeddings):
class PineconeVectorEmbeddings(VectorEmbeddings):

def __init__(self, uuid, embeds, metadata):
self.uuid = uuid
Expand Down
2 changes: 1 addition & 1 deletion superagi/vector_embeddings/qdrant.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import Any
from superagi.vector_embeddings.base import VectorEmbeddings

class Qdrant(VectorEmbeddings):
class QdrantVectorEmbeddings(VectorEmbeddings):

def __init__(self, uuid, embeds, metadata):
self.uuid = uuid
Expand Down
14 changes: 6 additions & 8 deletions superagi/vector_embeddings/vector_embedding_factory.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@

import pinecone
from typing import Optional
from pinecone import UnauthorizedException
from superagi.vector_embeddings.pinecone import Pinecone
from superagi.vector_embeddings.qdrant import Qdrant
from superagi.vector_embeddings.weaviate import Weaviate
from superagi.vector_embeddings.pinecone import PineconeVectorEmbeddings
from superagi.vector_embeddings.qdrant import QdrantVectorEmbeddings
from superagi.vector_embeddings.weaviate import WeaviateVectorEmbeddings
from superagi.types.vector_store_types import VectorStoreType

class VectorEmbeddingFactory:
Expand Down Expand Up @@ -38,10 +36,10 @@ def build_vector_storage(cls, vector_store: VectorStoreType, chunk_json: Optiona
metadata.append(data)

if vector_store == VectorStoreType.PINECONE:
return Pinecone(uuid, embeds, metadata)
return PineconeVectorEmbeddings(uuid, embeds, metadata)

if vector_store == VectorStoreType.QDRANT:
return Qdrant(uuid, embeds, metadata)
return QdrantVectorEmbeddings(uuid, embeds, metadata)

if vector_store == VectorStoreType.WEAVIATE:
return Weaviate(uuid, embeds, metadata)
return WeaviateVectorEmbeddings(uuid, embeds, metadata)
2 changes: 1 addition & 1 deletion superagi/vector_embeddings/weaviate.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import Any
from superagi.vector_embeddings.base import VectorEmbeddings

class Weaviate(VectorEmbeddings):
class WeaviateVectorEmbeddings(VectorEmbeddings):

def __init__(self, uuid, embeds, metadata):
self.uuid = uuid
Expand Down
2 changes: 1 addition & 1 deletion superagi/vector_store/pinecone.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from superagi.vector_store.embedding.base import BaseEmbedding


class Pinecone(VectorStore):
class PineconeVectorStore(VectorStore):
"""
Pinecone vector store.

Expand Down
2 changes: 1 addition & 1 deletion superagi/vector_store/qdrant.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def create_qdrant_client(api_key: Optional[str] = None, url: Optional[str] = Non
return qdrant_client


class Qdrant(VectorStore):
class QdrantVectorStore(VectorStore):
"""
Qdrant vector store.

Expand Down
4 changes: 2 additions & 2 deletions superagi/vector_store/redis.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
VECTOR_SCORE_KEY = "vector_score"


class Redis(VectorStore):
class RedisVectorStore(VectorStore):

def delete_embeddings_from_vector_db(self, ids: List[str]) -> None:
pass
Expand Down Expand Up @@ -166,4 +166,4 @@ def escape_token(self, value: str) -> str:
def escape_symbol(match: re.Match) -> str:
return f"\\{match.group(0)}"

return escaped_chars_re.sub(escape_symbol, value)
return escaped_chars_re.sub(escape_symbol, value)
41 changes: 20 additions & 21 deletions superagi/vector_store/vector_factory.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import pinecone
from pinecone import UnauthorizedException

from superagi.vector_store.pinecone import Pinecone
from superagi.vector_store import weaviate
from pinecone import Pinecone, UnauthorizedException
from superagi.config.config import get_config
from superagi.lib.logger import logger
from superagi.types.vector_store_types import VectorStoreType
from superagi.vector_store.pinecone import PineconeVectorStore
from superagi.vector_store import weaviate
from superagi.vector_store.weaviate import WeaviateVectorStore
from superagi.vector_store import qdrant
from superagi.vector_store.redis import Redis
from superagi.vector_store.embedding.openai import OpenAiEmbedding
from superagi.vector_store.qdrant import Qdrant
from superagi.vector_store.qdrant import QdrantVectorStore
from superagi.vector_store.redis import RedisVectorStore


class VectorFactory:
Expand All @@ -35,21 +34,21 @@ def get_vector_storage(cls, vector_store: VectorStoreType, index_name, embedding
env = get_config("PINECONE_ENVIRONMENT")
if api_key is None or env is None:
raise ValueError("PineCone API key not found")
pinecone.init(api_key=api_key, environment=env)
pc = Pinecone(api_key=api_key)

if index_name not in pinecone.list_indexes():
if index_name not in pc.list_indexes():
sample_embedding = embedding_model.get_embedding("sample")
if "error" in sample_embedding:
logger.error(f"Error in embedding model {sample_embedding}")

# if does not exist, create index
pinecone.create_index(
pc.create_index(
index_name,
dimension=len(sample_embedding),
metric='dotproduct'
)
index = pinecone.Index(index_name)
return Pinecone(index, embedding_model, 'text')
index = pc.Index(index_name)
return PineconeVectorStore(index, embedding_model, 'text')
except UnauthorizedException:
raise ValueError("PineCone API key not found")

Expand All @@ -63,20 +62,20 @@ def get_vector_storage(cls, vector_store: VectorStoreType, index_name, embedding
url=url,
api_key=api_key
)
return weaviate.Weaviate(client, embedding_model, index_name, 'text')
return WeaviateVectorStore(client, embedding_model, index_name, 'text')

if vector_store == VectorStoreType.QDRANT:
client = qdrant.create_qdrant_client()
sample_embedding = embedding_model.get_embedding("sample")
if "error" in sample_embedding:
logger.error(f"Error in embedding model {sample_embedding}")

Qdrant.create_collection(client, index_name, len(sample_embedding))
return qdrant.Qdrant(client, embedding_model, index_name)
QdrantVectorStore.create_collection(client, index_name, len(sample_embedding))
return QdrantVectorStore(client, embedding_model, index_name)

if vector_store == VectorStoreType.REDIS:
index_name = "super-agent-index1"
redis = Redis(index_name, embedding_model)
redis = RedisVectorStore(index_name, embedding_model)
redis.create_index()
return redis

Expand All @@ -89,16 +88,16 @@ def build_vector_storage(cls, vector_store: VectorStoreType, index_name, embeddi

if vector_store == VectorStoreType.PINECONE:
try:
pinecone.init(api_key = creds["api_key"], environment = creds["environment"])
index = pinecone.Index(index_name)
return Pinecone(index, embedding_model)
pc = Pinecone(api_key = creds["api_key"])
index = pc.Index(index_name)
return PineconeVectorStore(index, embedding_model)
except UnauthorizedException:
raise ValueError("PineCone API key not found")
raise ValueError("Pinecone API key not found")

if vector_store == VectorStoreType.QDRANT:
try:
client = qdrant.create_qdrant_client(creds["api_key"], creds["url"], creds["port"])
return qdrant.Qdrant(client, embedding_model, index_name)
return QdrantVectorStore(client, embedding_model, index_name)
except:
raise ValueError("Qdrant API key not found")

Expand Down
2 changes: 1 addition & 1 deletion superagi/vector_store/weaviate.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def create_weaviate_client(
return client


class Weaviate(VectorStore):
class WeaviateVectorStore(VectorStore):
def __init__(
self, client: weaviate.Client, embedding_model: Any, class_name: str, text_field: str = "text"
):
Expand Down
4 changes: 2 additions & 2 deletions tests/integration_tests/vector_embeddings/test_pinecone.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import unittest
from superagi.vector_embeddings.pinecone import Pinecone
from superagi.vector_embeddings.pinecone import PineconeVectorEmbeddings


class TestPinecone(unittest.TestCase):
Expand All @@ -8,7 +8,7 @@ def setUp(self):
self.uuid = ["id1", "id2"]
self.embeds = ["embed1", "embed2"]
self.metadata = ["metadata1", "metadata2"]
self.pinecone_instance = Pinecone(self.uuid, self.embeds, self.metadata)
self.pinecone_instance = PineconeVectorEmbeddings(self.uuid, self.embeds, self.metadata)

def test_init(self):
self.assertEqual(self.pinecone_instance.uuid, self.uuid)
Expand Down