diff --git a/trustgraph-flow/trustgraph/agent/react/tools.py b/trustgraph-flow/trustgraph/agent/react/tools.py index 18675084..71fe7409 100644 --- a/trustgraph-flow/trustgraph/agent/react/tools.py +++ b/trustgraph-flow/trustgraph/agent/react/tools.py @@ -154,7 +154,8 @@ class RowEmbeddingsQueryImpl: logger.debug("Getting embeddings for row query...") query_text = arguments.get("query") - vectors = await embeddings_client.embed(query_text) + all_vectors = await embeddings_client.embed([query_text]) + vectors = all_vectors[0] if all_vectors else [] # Now query row embeddings client = self.context("row-embeddings-query-request") diff --git a/trustgraph-flow/trustgraph/extract/kg/ontology/extract.py b/trustgraph-flow/trustgraph/extract/kg/ontology/extract.py index a0d9a3fe..11767d0b 100644 --- a/trustgraph-flow/trustgraph/extract/kg/ontology/extract.py +++ b/trustgraph-flow/trustgraph/extract/kg/ontology/extract.py @@ -148,8 +148,8 @@ class Processor(FlowProcessor): # Detect embedding dimension by embedding a test string logger.info("Detecting embedding dimension from embeddings service...") - test_embedding_response = await embeddings_client.embed("test") - test_embedding = test_embedding_response[0] # Extract from [[vector]] + test_embedding_response = await embeddings_client.embed(["test"]) + test_embedding = test_embedding_response[0][0] # Extract first vector from first text dimension = len(test_embedding) logger.info(f"Detected embedding dimension: {dimension}") diff --git a/trustgraph-flow/trustgraph/extract/kg/ontology/ontology_embedder.py b/trustgraph-flow/trustgraph/extract/kg/ontology/ontology_embedder.py index 8eee76b4..4bff6551 100644 --- a/trustgraph-flow/trustgraph/extract/kg/ontology/ontology_embedder.py +++ b/trustgraph-flow/trustgraph/extract/kg/ontology/ontology_embedder.py @@ -153,13 +153,11 @@ class OntologyEmbedder: # Get embeddings for batch texts = [elem['text'] for elem in batch] try: - # Call embedding service for each text - # Note: embed() returns 2D array [[vector]], so extract first element - embedding_tasks = [self.embedding_service.embed(text) for text in texts] - embeddings_responses = await asyncio.gather(*embedding_tasks) + # Single batch embedding call + embeddings_response = await self.embedding_service.embed(texts) - # Extract vectors from responses (each is [[vector]]) - embeddings_list = [resp[0] for resp in embeddings_responses] + # Extract first vector from each text's vector set + embeddings_list = [resp[0] for resp in embeddings_response] # Convert to numpy array embeddings = np.array(embeddings_list) @@ -218,9 +216,9 @@ class OntologyEmbedder: return None try: - # embed() returns 2D array [[vector]], extract first element - embedding_response = await self.embedding_service.embed(text) - return np.array(embedding_response[0]) + # embed() with single text, extract first vector from first text + embedding_response = await self.embedding_service.embed([text]) + return np.array(embedding_response[0][0]) except Exception as e: logger.error(f"Failed to embed text: {e}") return None @@ -239,11 +237,10 @@ class OntologyEmbedder: return None try: - # Call embed() for each text (returns [[vector]] per call) - embedding_tasks = [self.embedding_service.embed(text) for text in texts] - embeddings_responses = await asyncio.gather(*embedding_tasks) - # Extract first vector from each response - embeddings_list = [resp[0] for resp in embeddings_responses] + # Single batch embedding call + embeddings_response = await self.embedding_service.embed(texts) + # Extract first vector from each text's vector set + embeddings_list = [resp[0] for resp in embeddings_response] return np.array(embeddings_list) except Exception as e: logger.error(f"Failed to embed texts: {e}") diff --git a/trustgraph-flow/trustgraph/retrieval/document_rag/document_rag.py b/trustgraph-flow/trustgraph/retrieval/document_rag/document_rag.py index f192bcf3..6402010a 100644 --- a/trustgraph-flow/trustgraph/retrieval/document_rag/document_rag.py +++ b/trustgraph-flow/trustgraph/retrieval/document_rag/document_rag.py @@ -24,12 +24,13 @@ class Query: if self.verbose: logger.debug("Computing embeddings...") - qembeds = await self.rag.embeddings_client.embed(query) + qembeds = await self.rag.embeddings_client.embed([query]) if self.verbose: logger.debug("Embeddings computed") - return qembeds + # Return the vector set for the first (only) text + return qembeds[0] if qembeds else [] async def get_docs(self, query): diff --git a/trustgraph-flow/trustgraph/retrieval/graph_rag/graph_rag.py b/trustgraph-flow/trustgraph/retrieval/graph_rag/graph_rag.py index 7ccba248..21d5aed1 100644 --- a/trustgraph-flow/trustgraph/retrieval/graph_rag/graph_rag.py +++ b/trustgraph-flow/trustgraph/retrieval/graph_rag/graph_rag.py @@ -72,12 +72,13 @@ class Query: if self.verbose: logger.debug("Computing embeddings...") - qembeds = await self.rag.embeddings_client.embed(query) + qembeds = await self.rag.embeddings_client.embed([query]) if self.verbose: logger.debug("Done.") - return qembeds + # Return the vector set for the first (only) text + return qembeds[0] if qembeds else [] async def get_entities(self, query):