mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-07-03 06:51:00 +02:00
Replace the three-prompt LLM scoring pipeline (kg-edge-scoring, kg-edge-reasoning, kg-edge-selection) with a cross-encoder reranker service backed by FlashRank. The new hop_and_filter() method performs iterative graph traversal with semantic scoring at each hop, replacing the previous follow_edges/get_subgraph approach. - Add reranker service (trustgraph-base client/service, FlashRank processor) - Add gateway dispatch for reranker via API and WebSocket - Rewrite GraphRAG pipeline: hop_and_filter() with per-hop cross-encoder scoring - Remove kg_prompt() and edge_score_limit from prompt client - Update provenance: add tg:EdgeSelection type, tg:concept, tg:score predicates - Update CLIs (tg-invoke-graph-rag, tg-show-explain-trace) for new metadata - Add tg-invoke-reranker CLI tool - Add tech spec and UX developer guidance - Update all unit and integration tests
43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
|
|
from . request_response_spec import RequestResponse, RequestResponseSpec
|
|
from .. schema import (
|
|
RerankerRequest, RerankerResponse,
|
|
RerankerQuery, RerankerDocument,
|
|
)
|
|
|
|
class RerankerClient(RequestResponse):
|
|
async def rerank(self, queries, documents, limit=10, timeout=300):
|
|
|
|
resp = await self.request(
|
|
RerankerRequest(
|
|
queries=[
|
|
RerankerQuery(query_id=q["id"], query_text=q["text"])
|
|
for q in queries
|
|
],
|
|
documents=[
|
|
RerankerDocument(
|
|
document_id=d["id"], document_text=d["text"]
|
|
)
|
|
for d in documents
|
|
],
|
|
limit=limit,
|
|
),
|
|
timeout=timeout
|
|
)
|
|
|
|
if resp.error:
|
|
raise RuntimeError(resp.error.message)
|
|
|
|
return resp.results
|
|
|
|
class RerankerClientSpec(RequestResponseSpec):
|
|
def __init__(
|
|
self, request_name, response_name,
|
|
):
|
|
super(RerankerClientSpec, self).__init__(
|
|
request_name = request_name,
|
|
request_schema = RerankerRequest,
|
|
response_name = response_name,
|
|
response_schema = RerankerResponse,
|
|
impl = RerankerClient,
|
|
)
|