custom-gpt / src /config /vector_store.py
ABAO77's picture
Upload 69 files
55e58da verified
from .llm import embeddings
import os
from langchain_pinecone import PineconeVectorStore
from pydantic import BaseModel
from langchain_google_genai.embeddings import GoogleGenerativeAIEmbeddings
from typing import List, Dict, Any, Optional
from langchain_core.documents import Document
from langchain_core.vectorstores import VectorStore
API_PINCONE_KEY = os.getenv("PINECONE_API_KEY")
test_rag_vector_store = PineconeVectorStore(
index_name="rag-vector-store",
embedding=embeddings,
pinecone_api_key=API_PINCONE_KEY,
)
class PineconeVectorStoreCRUD(BaseModel):
index_name: str
embedding: GoogleGenerativeAIEmbeddings
pinecone_api_key: str
def __init__(
self,
index_name: str,
embedding: GoogleGenerativeAIEmbeddings,
pinecone_api_key: str,
k: int = 5,
score_threshold: float = 0.3,
) -> VectorStore:
self.vector_store = PineconeVectorStore(
index_name=index_name,
embedding=embedding,
pinecone_api_key=pinecone_api_key,
)
self.retriever = self.vector_store.as_retriever(
search_type="similarity_score_threshold",
search_kwargs={"k": k, "score_threshold": score_threshold},
)
async def search(self, query: str, filter: Optional[Dict[str, Any]] = None):
return await self.retriever.ainvoke(query, filter=filter)
async def add_documents(self, documents: List[Document], ids: List[str]):
await self.vector_store.aadd_documents(documents, ids=ids)
async def get_documents(self, filter: Optional[Dict[str, Any]] = None):
return await self.vector_store.asimilarity_search("", filter=filter)
async def delete_documents(self, ids: List[str]):
await self.vector_store.adelete(ids=ids)
async def update_documents(self, documents: List[Document], ids: List[str]):
await self.vector_store.aadd_documents(documents, ids=ids)
test_rag_vector_store = PineconeVectorStore(
index_name="rag-vector-store",
embedding=embeddings,
pinecone_api_key=API_PINCONE_KEY,
)