mirror of
https://github.com/semantica-agi/semantica.git
synced 2026-08-29 04:26:20 +00:00
Merge pull request #885 from ArmanGrewal007/fix/issue-875
fix(semantic_extract): reset vector similarity state when scoring fails
This commit is contained in:
@@ -281,6 +281,8 @@ def find_best_match_index(text: str, candidates: List[str]) -> Tuple[int, float]
|
||||
Find the best matching candidate index and score.
|
||||
Uses hybrid similarity approach: Exact -> Synonym -> Substring -> Embeddings -> Vector -> Fuzzy.
|
||||
Optimized for batch processing to avoid redundant embedding calculations.
|
||||
Embedding/vector similarity stages are best-effort; if they fail, matching falls back
|
||||
to remaining strategies instead of raising.
|
||||
|
||||
Returns:
|
||||
Tuple[int, float]: (best_candidate_index, best_score). Index is -1 if no candidates.
|
||||
@@ -404,10 +406,12 @@ def find_best_match_index(text: str, candidates: List[str]) -> Tuple[int, float]
|
||||
vector_idx = -1
|
||||
|
||||
if nlp and nlp.vocab.vectors.shape[0] > 0:
|
||||
failing_candidate_idx = -1
|
||||
try:
|
||||
doc = nlp(text)
|
||||
if doc.vector_norm:
|
||||
for i, candidate in enumerate(candidates):
|
||||
failing_candidate_idx = i
|
||||
if not candidate: continue
|
||||
cand_doc = nlp(candidate)
|
||||
if cand_doc.vector_norm:
|
||||
@@ -416,7 +420,13 @@ def find_best_match_index(text: str, candidates: List[str]) -> Tuple[int, float]
|
||||
vector_score = score
|
||||
vector_idx = i
|
||||
except Exception:
|
||||
pass
|
||||
logger.debug(
|
||||
"Vector similarity calculation failed at candidate index %s; continuing with fallback scoring.",
|
||||
failing_candidate_idx if failing_candidate_idx >= 0 else "N/A",
|
||||
exc_info=True,
|
||||
)
|
||||
vector_score = 0.0
|
||||
vector_idx = -1
|
||||
|
||||
if vector_score > best_score:
|
||||
best_score = vector_score
|
||||
|
||||
Reference in New Issue
Block a user