9x25dillon commited on
Commit
8fa5bbb
·
verified ·
1 Parent(s): 7c76df6

Create api/router_rerank.py

Browse files
Files changed (1) hide show
  1. api/router_rerank.py +6 -4
api/router_rerank.py CHANGED
@@ -3,22 +3,24 @@ from fastapi import APIRouter
3
  import numpy as np
4
  from consensus.topo import TopologicalConsciousness
5
  from api.schemas import RerankRequest
 
6
 
7
  router = APIRouter(prefix="/rerank", tags=["rag"])
8
 
9
  @router.post("")
10
  def rerank(req: RerankRequest):
11
- from adapters.openai_adapter import OpenAIAdapter
12
- model = OpenAIAdapter()
13
  q = np.array(model.embed_text(req.query))
14
  doc_embs = [np.array(model.embed_text(d)) for d in req.docs]
15
  tc = TopologicalConsciousness(n_anyons=len(doc_embs), central_charge=627)
16
  pc = tc.calculate_coherence(doc_embs)
17
  alpha, beta, lamb = 1.0, 0.3, 0.2
18
  scores = []
 
19
  for e in doc_embs:
20
- sim = float(q @ e / ((np.linalg.norm(q)+1e-12)*(np.linalg.norm(e)+1e-12)))
 
21
  energy = tc.cardy_boundary_energy(e)
22
  scores.append(alpha*sim + beta*pc - lamb*energy)
23
  order = np.argsort(scores)[::-1].tolist()
24
- return {"order": order, "scores": [float(s) for s in scores]}
 
3
  import numpy as np
4
  from consensus.topo import TopologicalConsciousness
5
  from api.schemas import RerankRequest
6
+ from adapters.hf_sentence_tfm_adapter import SentenceTransformerAdapter
7
 
8
  router = APIRouter(prefix="/rerank", tags=["rag"])
9
 
10
  @router.post("")
11
  def rerank(req: RerankRequest):
12
+ model = SentenceTransformerAdapter()
 
13
  q = np.array(model.embed_text(req.query))
14
  doc_embs = [np.array(model.embed_text(d)) for d in req.docs]
15
  tc = TopologicalConsciousness(n_anyons=len(doc_embs), central_charge=627)
16
  pc = tc.calculate_coherence(doc_embs)
17
  alpha, beta, lamb = 1.0, 0.3, 0.2
18
  scores = []
19
+ qn = q / (np.linalg.norm(q) + 1e-12)
20
  for e in doc_embs:
21
+ en = e / (np.linalg.norm(e) + 1e-12)
22
+ sim = float(qn @ en)
23
  energy = tc.cardy_boundary_energy(e)
24
  scores.append(alpha*sim + beta*pc - lamb*energy)
25
  order = np.argsort(scores)[::-1].tolist()
26
+ return {"order": order, "scores": [float(s) for s in scores], "coherence": pc}