* Add get_nodes_by_query method to Graphiti class Add a method to the Graphiti class that wraps `get_relevant_nodes` and returns a list of nodes given a query. * Add `get_nodes_by_query` method to the `Graphiti` class in `graphiti_core/graphiti.py`. * Import `generate_embedding` from `graphiti_core/llm_client/utils.py`. * Use `generate_embedding` to generate an embedding for the query. * Call `get_relevant_nodes` with the generated embedding and return the relevant nodes. Add an embedding function to `llm_client/utils.py`. * Add `generate_embedding` function to `graphiti_core/llm_client/utils.py`. * Accept an embedder and model_id as parameters. * Generate an embedding for the given text and return it. --- For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/getzep/graphiti?shareId=XXXX-XXXX-XXXX-XXXX). * address comments left by @danielchalef on #49 (Add get_nodes_by_query method to Graphiti class); * fix ellipsis name in cla config * feat: Add get_nodes_by_query method to Graphiti class * chore: Cleanup unused files, add hybrid node search, add tests --------- Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Co-authored-by: paulpaliychuk <pavlo.paliychuk.ca@gmail.com>
22 lines
555 B
Python
22 lines
555 B
Python
import logging
|
|
import typing
|
|
from time import time
|
|
|
|
from graphiti_core.llm_client.config import EMBEDDING_DIM
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
async def generate_embedding(
|
|
embedder: typing.Any, text: str, model: str = 'text-embedding-3-small'
|
|
):
|
|
start = time()
|
|
|
|
text = text.replace('\n', ' ')
|
|
embedding = (await embedder.create(input=[text], model=model)).data[0].embedding
|
|
embedding = embedding[:EMBEDDING_DIM]
|
|
|
|
end = time()
|
|
logger.debug(f'embedded text of length {len(text)} in {end-start} ms')
|
|
|
|
return embedding
|