Spaces:
Running
Running
File size: 1,313 Bytes
a55ea57 5583f46 a55ea57 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | """
File: /kg.py
Created Date: Wednesday December 31st 2025
Author: Christian Nonis <alch.infoemail@gmail.com>
-----
Last Modified: Wednesday December 31st 2025 7:45:55 pm
Modified By: Christian Nonis <alch.infoemail@gmail.com>
-----
"""
import asyncio
from src.services.kg_agent.main import (
embeddings_adapter,
graph_adapter,
vector_store_adapter,
)
from src.utils.vector_search import VectorSearchFacade
vector_search = VectorSearchFacade(vector_store_adapter)
async def get_hops(
query: str, degrees: int = 2, flattened: bool = True, brain_id: str = "default"
):
"""
Get the hops in the graph for a given query.
Currently only supports 2nd degree hops.
"""
text_embeddings = embeddings_adapter.embed_query(query)
data_vectors = vector_search.search_nodes(
text_embeddings.embeddings,
brain_id=brain_id,
)
node_uuids = [v.metadata.get("uuid") for v in data_vectors]
print("[+] Getting 2nd degree hops for nodes:", node_uuids)
if len(node_uuids) == 0:
return []
hops = await asyncio.to_thread(
graph_adapter.get_2nd_degree_hops,
node_uuids,
flattened=flattened,
vector_store_adapter=vector_store_adapter,
brain_id=brain_id,
similarity_threshold=0.0,
)
return hops
|