一切顺势而行 2025-06-15 20:32 采纳率: 75%
浏览 29
已结题

python langchain rag 检索增强报错


import os
import asyncio

from pydantic import SecretStr

#ollamba_basurl = "http://localhost:11434"
#model_name = "deepseekr1:7b"
# llm = ChatOllama(
#     temperature=0.0,
#     model= model_name,
#     base_url = ollamba_basurl
# )
llm = ChatOpenAI(
    base_url=os.getenv("OPENAI_URL"),
    model=os.getenv("QIANWEN_MODEL_NAME"),
    api_key=os.getenv("OPENAI_API_KEY")
)
# embeddings = OllamaEmbeddings(model = "quentinz/bge-large-zh-v1.5:lates",
#     base_url= ollamba_basurl)
embeddings = OpenAIEmbeddings(
    base_url = "https://ark.cn-beijing.volces.com/api/v3",
    api_key = os.getenv("OPENAI_EMBEDDING_API_KEY"),
    model = "doubao-embedding-large-text-240915"
)
collection = 'pdf_document'
try:
    db = Milvus(
        embedding_function = embeddings,
        collection_name = collection,
        text_field="content",
        vector_field="embedding",
        connection_args={
            "host":"192.168.64.145",
            "port":"19530",
            "user":"root",
            "password":"Milvus",
            "db_name":"default"
        }
    )
except Exception as e:
    print(f"连接milvus失败 {e}")
    raise e
# 创建相似度检索器
retriever = db.as_retriever(
     search_type="similarity",
     search_kwargs={
         "k": 3
     }
 )
# 构建提示词
prompt = ChatPromptTemplate.from_template(
    """
    请根据上下文之间输出最终答案,不要包含任何推理过程,如果不知道答案,请输出不知道
    上下文: {content}
    问题: {question}
    答案:
    """
)


#  构建请求链

setup_retriever = RunnableParallel({"content": retriever, "question" : RunnablePassthrough()})
chain = setup_retriever|prompt | llm | StrOutputParser()
async def get_answer(question):
    async for chunk in chain.astream(question):
         print(chunk,end = " ",flush= True)

if __name__ == '__main__':
    response = chain.invoke("bright grace 下面是什么")
    print(response)
    # loop = asyncio.get_event_loop()
    # asyncio.set_event_loop(loop)
    # loop.run_until_complete(get_answer("回答一个你会的问题"))



D:\code\python-start-demo\ai\ollama_embedding.py:43: LangChainDeprecationWarning: The class `Milvus` was deprecated in LangChain 0.2.0 and will be removed in 1.0. An updated version of the class exists in the :class:`~langchain-milvus package and should be used instead. To use it run `pip install -U :class:`~langchain-milvus` and import as `from :class:`~langchain_milvus import MilvusVectorStore``.
  db = Milvus(
Traceback (most recent call last):
  File "D:\code\python-start-demo\ai\ollama_embedding.py", line 86, in <module>
    response = chain.invoke("bright grace 下面是什么")
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\ProgramData\conda_envs\myenv\Lib\site-packages\langchain_core\runnables\base.py", line 3045, in invoke
    input_ = context.run(step.invoke, input_, config, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\ProgramData\conda_envs\myenv\Lib\site-packages\langchain_core\runnables\base.py", line 3774, in invoke
    output = {key: future.result() for key, future in zip(steps, futures)}
                   ^^^^^^^^^^^^^^^
  File "D:\ProgramData\conda_envs\myenv\Lib\concurrent\futures\_base.py", line 456, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "D:\ProgramData\conda_envs\myenv\Lib\concurrent\futures\_base.py", line 401, in __get_result
    raise self._exception
  File "D:\ProgramData\conda_envs\myenv\Lib\concurrent\futures\thread.py", line 59, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\ProgramData\conda_envs\myenv\Lib\site-packages\langchain_core\runnables\base.py", line 3758, in _invoke_step
    return context.run(
           ^^^^^^^^^^^^
  File "D:\ProgramData\conda_envs\myenv\Lib\site-packages\langchain_core\retrievers.py", line 259, in invoke
    result = self._get_relevant_documents(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\ProgramData\conda_envs\myenv\Lib\site-packages\langchain_core\vectorstores\base.py", line 1079, in _get_relevant_documents
    docs = self.vectorstore.similarity_search(query, **_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xieme\AppData\Roaming\Python\Python312\site-packages\langchain_community\vectorstores\milvus.py", line 663, in similarity_search
    res = self.similarity_search_with_score(
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xieme\AppData\Roaming\Python\Python312\site-packages\langchain_community\vectorstores\milvus.py", line 734, in similarity_search_with_score
    embedding = self.embedding_func.embed_query(query)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\ProgramData\conda_envs\myenv\Lib\site-packages\langchain_openai\embeddings\base.py", line 638, in embed_query
    return self.embed_documents([text], **kwargs)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\ProgramData\conda_envs\myenv\Lib\site-packages\langchain_openai\embeddings\base.py", line 590, in embed_documents
    return self._get_len_safe_embeddings(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\ProgramData\conda_envs\myenv\Lib\site-packages\langchain_openai\embeddings\base.py", line 478, in _get_len_safe_embeddings
    response = self.client.create(
               ^^^^^^^^^^^^^^^^^^^
  File "D:\ProgramData\conda_envs\myenv\Lib\site-packages\openai\resources\embeddings.py", line 129, in create
    return self._post(
           ^^^^^^^^^^^
  File "D:\ProgramData\conda_envs\myenv\Lib\site-packages\openai\_base_client.py", line 1242, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\ProgramData\conda_envs\myenv\Lib\site-packages\openai\_base_client.py", line 1037, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'error': {'code': 'InvalidParameter', 'message': 'The parameter `input[0]` specified in the request are not valid: expected a string, but got `[73216 21507 40195 28190 21043 6271 222 82696]` instead. Request id: 02174999054139521b512236e6af9dc2992721609ebcc354653b4', 'param': 'input[0]', 'type': 'BadRequest'}}
  • 写回答

6条回答 默认 最新

  • 一切顺势而行 2025-06-16 06:29
    关注

    img


    set_debug(True) # 显示检索日志
    db = Milvus.from_documents(
    documents=documents, # 设置保存的文档
    embedding=embeddings, # 设置 embedding model
    collection_name="book", # 设置 集合名称
    drop_old=True,
    connection_args={"host": "127.0.0.1", "port": "19530"},# Milvus连接配置
    )

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 6月27日
  • 已采纳回答 6月19日
  • 创建了问题 6月15日