|
@@ -1,6 +1,6 @@
|
|
|
from fastapi import APIRouter, HTTPException
|
|
|
from pydantic import BaseModel
|
|
|
-from typing import List
|
|
|
+from typing import List, Optional
|
|
|
from service.trunks_service import TrunksService
|
|
|
from utils.text_splitter import TextSplitter
|
|
|
from utils.vector_distance import VectorDistance
|
|
@@ -13,7 +13,7 @@ router = APIRouter(prefix="/text", tags=["Text Search"])
|
|
|
|
|
|
class TextSearchRequest(BaseModel):
|
|
|
text: str
|
|
|
- conversation_id: str
|
|
|
+ conversation_id: Optional[str] = None
|
|
|
|
|
|
@router.post("/search", response_model=StandardResponse)
|
|
|
async def search_text(request: TextSearchRequest):
|
|
@@ -40,14 +40,14 @@ async def search_text(request: TextSearchRequest):
|
|
|
sentence_vector = Vectorizer.get_embedding(sentence)
|
|
|
|
|
|
for cached_result in cached_results:
|
|
|
- content_vector = Vectorizer.get_embedding(cached_result['content'])
|
|
|
+ content_vector = cached_result['embedding']
|
|
|
distance = VectorDistance.calculate_distance(sentence_vector, content_vector)
|
|
|
if distance < min_distance:
|
|
|
min_distance = distance
|
|
|
best_result = {**cached_result, 'distance': distance}
|
|
|
|
|
|
|
|
|
- if best_result and best_result['distance'] < 1:
|
|
|
+ if best_result and best_result['distance'] < 0.75:
|
|
|
search_results = [best_result]
|
|
|
else:
|
|
|
search_results = []
|