From 719e2713eddd98ad56e69d02871777e608b9f2b2 Mon Sep 17 00:00:00 2001 From: imClumsyPanda Date: Sun, 31 Dec 2023 20:13:14 +0800 Subject: [PATCH] fix typos --- configs/model_config.py.example | 2 +- requirements.txt | 14 ++-- server/reranker/reranker.py | 116 +++++++++++++++++--------------- 3 files changed, 69 insertions(+), 63 deletions(-) diff --git a/configs/model_config.py.example b/configs/model_config.py.example index be2f412..b203e93 100644 --- a/configs/model_config.py.example +++ b/configs/model_config.py.example @@ -28,7 +28,7 @@ EMBEDDING_MODEL_OUTPUT_PATH = "output" # chatglm3-6b输出角色标签<|user|>及自问自答的问题详见项目wiki->常见问题->Q20. -LLM_MODELS = ["chatglm3-6b", "zhipu-api", "openai-api"] # "Qwen-1_8B-Chat", +LLM_MODELS = ["chatglm3-6b", "zhipu-api", "openai-api"] # "Qwen-1_8B-Chat", # AgentLM模型的名称 (可以不指定,指定之后就锁定进入Agent之后的Chain的模型,不指定就是LLM_MODELS[0]) Agent_MODEL = None diff --git a/requirements.txt b/requirements.txt index 1d40610..1aef2e4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -25,7 +25,7 @@ faiss-cpu~=1.7.4 # `conda install faiss-gpu -c conda-forge` if you want to accel accelerate==0.24.1 spacy~=3.7.2 PyMuPDF~=1.23.8 -rapidocr_onnxruntime~=1.3.8 +rapidocr_onnxruntime==1.3.8 requests>=2.31.0 pathlib>=1.0.1 pytest>=7.4.3 @@ -35,16 +35,17 @@ markdownify>=0.11.6 tiktoken~=0.5.2 tqdm>=4.66.1 websockets>=12.0 -numpy~=1.26.2 -pandas~=2.1.4 +numpy~=1.24.4 +pandas~=2.0.3 einops>=0.7.0 transformers_stream_generator==0.0.4 vllm==0.2.6; sys_platform == "linux" -httpx[brotli,http2,socks]~=0.25.2 +httpx[brotli,http2,socks]==0.25.2 +llama-index # optional document loaders -rapidocr_paddle[gpu]>=1.3.0.post5 # gpu accelleration for ocr of pdf and image files +# rapidocr_paddle[gpu]>=1.3.0.post5 # gpu accelleration for ocr of pdf and image files jq>=1.6.0 # for .json and .jsonl files. suggest `conda install jq` on windows # html2text # for .enex files beautifulsoup4~=4.12.2 # for .mhtml files @@ -52,7 +53,7 @@ pysrt~=1.1.2 # Online api libs dependencies -zhipuai>=1.0.7,<=2.0.0 # zhipu +zhipuai>=1.0.7, <=2.0.0 # zhipu dashscope>=1.13.6 # qwen # volcengine>=1.0.119 # fangzhou @@ -75,5 +76,4 @@ streamlit-option-menu>=0.3.6 streamlit-chatbox==1.1.11 streamlit-modal>=0.1.0 streamlit-aggrid>=0.3.4.post3 -httpx[brotli,http2,socks]>=0.25.2 watchdog>=3.0.0 diff --git a/server/reranker/reranker.py b/server/reranker/reranker.py index 93ce3ba..c6cbebf 100644 --- a/server/reranker/reranker.py +++ b/server/reranker/reranker.py @@ -1,5 +1,6 @@ import os import sys + sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))) from typing import Any, List, Optional from sentence_transformers import CrossEncoder @@ -7,32 +8,34 @@ from typing import Optional, Sequence from langchain_core.documents import Document from langchain.callbacks.manager import Callbacks from langchain.retrievers.document_compressors.base import BaseDocumentCompressor -from llama_index.bridge.pydantic import Field,PrivateAttr +from llama_index.bridge.pydantic import Field, PrivateAttr + class LangchainReranker(BaseDocumentCompressor): """Document compressor that uses `Cohere Rerank API`.""" - model_name_or_path:str = Field() + model_name_or_path: str = Field() _model: Any = PrivateAttr() - top_n:int= Field() - device:str=Field() - max_length:int=Field() + top_n: int = Field() + device: str = Field() + max_length: int = Field() batch_size: int = Field() # show_progress_bar: bool = None num_workers: int = Field() + # activation_fct = None # apply_softmax = False - + def __init__(self, - model_name_or_path:str, - top_n:int=3, - device:str="cuda", - max_length:int=1024, - batch_size: int = 32, - # show_progress_bar: bool = None, - num_workers: int = 0, - # activation_fct = None, - # apply_softmax = False, - ): + model_name_or_path: str, + top_n: int = 3, + device: str = "cuda", + max_length: int = 1024, + batch_size: int = 32, + # show_progress_bar: bool = None, + num_workers: int = 0, + # activation_fct = None, + # apply_softmax = False, + ): # self.top_n=top_n # self.model_name_or_path=model_name_or_path # self.device=device @@ -43,24 +46,24 @@ class LangchainReranker(BaseDocumentCompressor): # self.activation_fct=activation_fct # self.apply_softmax=apply_softmax - self._model = CrossEncoder(model_name=model_name_or_path,max_length=1024,device=device) + self._model = CrossEncoder(model_name=model_name_or_path, max_length=1024, device=device) super().__init__( - top_n=top_n, - model_name_or_path=model_name_or_path, - device=device, - max_length=max_length, - batch_size=batch_size, - # show_progress_bar=show_progress_bar, - num_workers=num_workers, - # activation_fct=activation_fct, - # apply_softmax=apply_softmax - ) + top_n=top_n, + model_name_or_path=model_name_or_path, + device=device, + max_length=max_length, + batch_size=batch_size, + # show_progress_bar=show_progress_bar, + num_workers=num_workers, + # activation_fct=activation_fct, + # apply_softmax=apply_softmax + ) def compress_documents( - self, - documents: Sequence[Document], - query: str, - callbacks: Optional[Callbacks] = None, + self, + documents: Sequence[Document], + query: str, + callbacks: Optional[Callbacks] = None, ) -> Sequence[Document]: """ Compress documents using Cohere's rerank API. @@ -77,40 +80,43 @@ class LangchainReranker(BaseDocumentCompressor): return [] doc_list = list(documents) _docs = [d.page_content for d in doc_list] - sentence_pairs = [[query,_doc] for _doc in _docs] + sentence_pairs = [[query, _doc] for _doc in _docs] results = self._model.predict(sentences=sentence_pairs, - batch_size=self.batch_size, - # show_progress_bar=self.show_progress_bar, - num_workers=self.num_workers, - # activation_fct=self.activation_fct, - # apply_softmax=self.apply_softmax, - convert_to_tensor=True - ) + batch_size=self.batch_size, + # show_progress_bar=self.show_progress_bar, + num_workers=self.num_workers, + # activation_fct=self.activation_fct, + # apply_softmax=self.apply_softmax, + convert_to_tensor=True + ) top_k = self.top_n if self.top_n < len(results) else len(results) - + values, indices = results.topk(top_k) final_results = [] - for value, index in zip(values,indices): + for value, index in zip(values, indices): doc = doc_list[index] doc.metadata["relevance_score"] = value final_results.append(doc) return final_results -if __name__ == "__main__": - from configs import (LLM_MODELS, - VECTOR_SEARCH_TOP_K, - SCORE_THRESHOLD, - TEMPERATURE, - USE_RERANKER, - RERANKER_MODEL, - RERANKER_MAX_LENGTH, - MODEL_PATH) + + +if __name__ == "__main__": + from configs import (LLM_MODELS, + VECTOR_SEARCH_TOP_K, + SCORE_THRESHOLD, + TEMPERATURE, + USE_RERANKER, + RERANKER_MODEL, + RERANKER_MAX_LENGTH, + MODEL_PATH) from server.utils import embedding_device + if USE_RERANKER: - reranker_model_path = MODEL_PATH["reranker"].get(RERANKER_MODEL,"BAAI/bge-reranker-large") + reranker_model_path = MODEL_PATH["reranker"].get(RERANKER_MODEL, "BAAI/bge-reranker-large") print("-----------------model path------------------") print(reranker_model_path) reranker_model = LangchainReranker(top_n=3, - device=embedding_device(), - max_length=RERANKER_MAX_LENGTH, - model_name_or_path=reranker_model_path - ) \ No newline at end of file + device=embedding_device(), + max_length=RERANKER_MAX_LENGTH, + model_name_or_path=reranker_model_path + )