diff --git a/backend/app/model_services/embedding_services.py b/backend/app/model_services/embedding_services.py index d830015..532c2b2 100644 --- a/backend/app/model_services/embedding_services.py +++ b/backend/app/model_services/embedding_services.py @@ -120,14 +120,31 @@ class ZhipuEmbeddingProvider(BaseServiceProvider[Embeddings]): Embeddings: LangChain 兼容的嵌入实例 """ if self._service_instance is None: - from langchain_zhipu import ZhipuAIEmbeddings - self._service_instance = ZhipuAIEmbeddings( + self._service_instance = _SimpleZhipuAIEmbeddings( model=self._model, api_key=ZHIPUAI_API_KEY ) return self._service_instance +class _SimpleZhipuAIEmbeddings(Embeddings): + """ + 简单的智谱 AI 嵌入实现,直接用 zhipuai 库 + """ + def __init__(self, model: str, api_key: str): + from zhipuai import ZhipuAI + self.model = model + self.client = ZhipuAI(api_key=api_key) + + def embed_documents(self, texts: list[str]) -> list[list[float]]: + response = self.client.embeddings.create(model=self.model, input=texts) + return [item.embedding for item in response.data] + + def embed_query(self, text: str) -> list[float]: + response = self.client.embeddings.create(model=self.model, input=[text]) + return response.data[0].embedding + + class LocalLlamaCppEmbedder: """ 通过 OpenAI 兼容 API 封装 llama.cpp 嵌入服务 diff --git a/backend/requirements.txt b/backend/requirements.txt index 55435f8..e26cef0 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -13,6 +13,9 @@ langgraph==1.1.6 langgraph-checkpoint-postgres==3.0.5 tiktoken>=0.12.0 +# Zhipu AI +zhipuai==2.0.1 + # Vector DB qdrant-client==1.17.1 @@ -36,7 +39,7 @@ tenacity==9.1.4 rich==15.0.0 PyYAML==6.0.3 numpy>=1.26.2 -pyjwt==2.10.1 +pyjwt==2.8.0 # Document Processing unstructured==0.22.21