githubexplorer / app /services /embedding_service.py
Kareman's picture
initial commit: full implemntation of git explorer project
acc643d
Raw
History Blame Contribute Delete
2.03 kB
from app.repositories.neo4j_repository import (
Neo4jRepository,
)
from app.services.embedding_model_service import (
EmbeddingModelService,
)
class EmbeddingService:
def __init__(self):
self.embedding_model = (
EmbeddingModelService()
)
self.neo = Neo4jRepository()
def build(
self,
repository_id: str,
resolved,
):
for file in resolved:
self._embed_functions(
repository_id,
file["functions"],
)
self._embed_classes(
repository_id,
file["classes"],
)
def _embed_functions(
self,
repository_id: str,
functions,
):
for function in functions:
source = function.get(
"source_code"
)
if not source:
continue
embedding = (
self.embedding_model.encode(
source
)
)
self.neo.update_embedding(
repository_id=repository_id,
qualified_name=function[
"qualified_name"
],
embedding=embedding,
)
def _embed_classes(
self,
repository_id: str,
classes,
):
for cls in classes:
source = cls.get(
"source_code"
)
if source:
embedding = (
self.embedding_model.encode(
source
)
)
self.neo.update_embedding(
repository_id=repository_id,
qualified_name=cls[
"qualified_name"
],
embedding=embedding,
)
self._embed_functions(
repository_id,
cls["methods"],
)