Spaces:
Sleeping
Sleeping
| 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"], | |
| ) |