From cb454314125a613b862b08f7d51e635f36b376da Mon Sep 17 00:00:00 2001 From: Kevin Hu Date: Mon, 23 Dec 2024 10:03:50 +0800 Subject: [PATCH] Fix Voyage re-rank model. Limit file name length. (#4171) ### What problem does this PR solve? #4152 #4154 ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- api/db/services/file_service.py | 2 ++ rag/llm/rerank_model.py | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/api/db/services/file_service.py b/api/db/services/file_service.py index be225aeeb..48a665f06 100644 --- a/api/db/services/file_service.py +++ b/api/db/services/file_service.py @@ -345,6 +345,8 @@ class FileService(CommonService): MAX_FILE_NUM_PER_USER = int(os.environ.get('MAX_FILE_NUM_PER_USER', 0)) if MAX_FILE_NUM_PER_USER > 0 and DocumentService.get_doc_count(kb.tenant_id) >= MAX_FILE_NUM_PER_USER: raise RuntimeError("Exceed the maximum file number of a free user!") + if len(file.filename) >= 128: + raise RuntimeError("Exceed the maximum length of file name!") filename = duplicate_name( DocumentService.query, diff --git a/rag/llm/rerank_model.py b/rag/llm/rerank_model.py index 925e08aa2..c42ee8944 100644 --- a/rag/llm/rerank_model.py +++ b/rag/llm/rerank_model.py @@ -422,10 +422,12 @@ class VoyageRerank(Base): self.model_name = model_name def similarity(self, query: str, texts: list): + rank = np.zeros(len(texts), dtype=float) + if not texts: + return rank, 0 res = self.client.rerank( query=query, documents=texts, model=self.model_name, top_k=len(texts) ) - rank = np.zeros(len(texts), dtype=float) for r in res.results: rank[r.index] = r.relevance_score return rank, res.total_tokens