Spaces:
Sleeping
Sleeping
| from langchain_community.vectorstores import FAISS | |
| from langchain.docstore.document import Document | |
| from langchain.embeddings.base import Embeddings | |
| from google import genai | |
| import os | |
| # Make sure your environment variable GOOGLE_API_KEY is set | |
| API_KEY = os.getenv("GOOGLE_API_KEY") | |
| if not API_KEY: | |
| raise ValueError("Missing GOOGLE_API_KEY environment variable!") | |
| # Initialize client with API key | |
| client = genai.Client(api_key=API_KEY) | |
| class GeminiEmbeddings(Embeddings): | |
| """LangChain wrapper for Google Gemini embeddings""" | |
| def embed_documents(self, texts): | |
| if not texts: | |
| return [] | |
| response = client.models.embed_content( | |
| model="gemini-embedding-001", | |
| contents=texts | |
| ) | |
| # Each response.embeddings[i].values is a list of floats | |
| return [e.values for e in response.embeddings] | |
| def embed_query(self, text): | |
| response = client.models.embed_content( | |
| model="gemini-embedding-001", | |
| contents=[text] | |
| ) | |
| return response.embeddings[0].values | |
| def create_vector_store(texts): | |
| docs = [Document(page_content=t) for t in texts if t.strip()] | |
| if not docs: | |
| return None | |
| embeddings = GeminiEmbeddings() | |
| vectorstore = FAISS.from_texts( | |
| texts=[d.page_content for d in docs], | |
| embedding=embeddings | |
| ) | |
| return vectorstore | |