app/core/graph_adapter.py aktualisiert
All checks were successful
Deploy mindnet to llm-node / deploy (push) Successful in 4s
All checks were successful
Deploy mindnet to llm-node / deploy (push) Successful in 4s
This commit is contained in:
parent
13b7c8858a
commit
1688cf0a1e
|
|
@ -14,7 +14,8 @@ Kompatibilität:
|
|||
(tests/test_retriever_edges.py patcht expand()).
|
||||
|
||||
Version:
|
||||
0.2.0 (2025-11-30 – direkte Qdrant-Abfrage, confidence-basiertes Gewicht)
|
||||
0.3.0 (2025-12-04 – note_id-bewusste Expansion, zusätzliche Edge-Typ-Gewichte,
|
||||
Subgraph.edge_bonus() für Kompatibilität zum Retriever)
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
|
@ -38,13 +39,24 @@ except Exception: # pragma: no cover
|
|||
# Basisgewichte je Edge-Typ.
|
||||
# Diese Werte werden mit der in der Edge-Payload hinterlegten "confidence"
|
||||
# multipliziert, falls vorhanden.
|
||||
#
|
||||
# Hinweis:
|
||||
# - Strukturkanten (belongs_to, next/prev) sind schwächer gewichtet.
|
||||
# - Wissenskanten (depends_on, related_to, similar_to, references) erhalten
|
||||
# höhere Basisgewichte, damit sie sich im Retriever bemerkbar machen.
|
||||
EDGE_BASE_WEIGHTS: Dict[str, float] = {
|
||||
"references": 0.20,
|
||||
"belongs_to": 0.10,
|
||||
"next": 0.06,
|
||||
"prev": 0.06,
|
||||
"backlink": 0.04,
|
||||
"references_at": 0.08,
|
||||
# Struktur / Navigationskanten
|
||||
"belongs_to": 0.10,
|
||||
"next": 0.06,
|
||||
"prev": 0.06,
|
||||
"backlink": 0.04,
|
||||
"references_at": 0.08,
|
||||
|
||||
# Wissenskanten
|
||||
"references": 0.20,
|
||||
"depends_on": 0.18,
|
||||
"related_to": 0.15,
|
||||
"similar_to": 0.12,
|
||||
# weitere Typen erhalten per Default 0.0 und wirken nur über centrality
|
||||
}
|
||||
|
||||
|
|
@ -173,9 +185,18 @@ class Subgraph:
|
|||
"""
|
||||
return sum(edge["weight"] for edge in self.adj.get(node_id, []))
|
||||
|
||||
def edge_bonus(self, node_id: str) -> float:
|
||||
"""
|
||||
Kompatibilitäts-Methode für den Retriever.
|
||||
|
||||
Der Retriever ruft subgraph.edge_bonus(node_id) auf. Intern verwenden
|
||||
wir aggregate_edge_bonus(...), um bestehende Tests nicht zu brechen.
|
||||
"""
|
||||
return self.aggregate_edge_bonus(node_id)
|
||||
|
||||
def centrality_bonus(self, node_id: str) -> float:
|
||||
"""
|
||||
Einfache log-gedämpfte Zentralität auf Basis der In-Degree.
|
||||
Einfache log-gedämpfte Zentralität auf Basis des In-Degree.
|
||||
Obergrenze: 0.15
|
||||
"""
|
||||
import math
|
||||
|
|
@ -197,9 +218,9 @@ def expand(
|
|||
Expandiert ab Seeds entlang von Edges (bis `depth`), optional gefiltert
|
||||
nach Edge-Typen.
|
||||
|
||||
Seeds sind stabile payload-IDs (z. B. note_id, chunk_id). Es werden Edges
|
||||
berücksichtigt, bei denen source_id ODER target_id ODER note_id einem der
|
||||
Seeds entspricht.
|
||||
Seeds sind stabile payload-IDs (in unserem Fall vor allem note_id).
|
||||
Es werden Edges berücksichtigt, bei denen source_id ODER target_id ODER
|
||||
note_id einem der Seeds entspricht.
|
||||
"""
|
||||
sg = Subgraph()
|
||||
frontier = set(seeds)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user