当前位置: 首页 > news >正文

珠海易注册网站新闻发布会直播在哪里看

珠海易注册网站,新闻发布会直播在哪里看,wordpress多用户商城,信誉好的扬中网站建设介绍基于 LangChain 框架的文档检索与问答功能,目标是通过查询存储的向量数据库(VectorDB),为用户的问题检索相关内容,并生成自然语言的答案。以下是代码逻辑的详细解析: 代码结构与功能 初始化环境与加载…

介绍基于 LangChain 框架的文档检索与问答功能,目标是通过查询存储的向量数据库(VectorDB),为用户的问题检索相关内容,并生成自然语言的答案。以下是代码逻辑的详细解析:


代码结构与功能

  1. 初始化环境与加载配置
    from dotenv import load_dotenv
    load_dotenv()os.environ['OPENAI_API_KEY'] = os.getenv("OPENAI_API_KEY")
    
    • 使用 dotenv 加载 .env 文件中的环境变量(如 OPENAI_API_KEYOPENAI_API_BASE)。
    • 将 OpenAI API 密钥设置为环境变量,供后续使用。

  1. 加载向量数据库
    VECTORDB_DIR = "data/airline_policy_vectordb"
    K = 2vectordb = Chroma(collection_name="rag-chroma",persist_directory=str(here(VECTORDB_DIR)),embedding_function=OpenAIEmbeddings()
    )
    print("Number of vectors in vectordb:", vectordb._collection.count(), "\n\n")
    
    • VECTORDB_DIR:向量数据库的存储目录。
    • K=2:设置检索时返回的文档数。
    • 使用 Chroma 加载向量数据库:
      • collection_name 指定集合名称。
      • persist_directory 指向存储数据库的目录。
      • embedding_function 使用 OpenAIEmbeddings 生成向量嵌入。
    • 打印向量数据库中存储的向量数量。

  1. 检索文档并生成提示
    message = "What is the cancelation rule for a flight ticket at swiss airline policy?"docs = vectordb.similarity_search(message, k=K)question = "# User new question:\n" + message
    retrieved_content = ""
    for doc in docs:retrieved_content += f"{doc.page_content}\n\n"
    prompt = f"# Content:\n{retrieved_content}\n\n{question}"pprint(prompt)
    
    • 定义用户问题 message,这是需要检索和回答的问题。
    • 检索文档
      • 使用 vectordb.similarity_search 在向量数据库中查找与问题最相似的文档,返回 K 个相关文档。
    • 生成提示
      • 将用户问题和检索到的文档内容整合为一个提示(prompt),格式如下:
        # Content:
        (检索到的文档内容)# User new question:
        (用户问题)
        

部分代码执行结果如下:
在这里插入图片描述
在这里插入图片描述


  1. 调用聊天模型生成答案
    from langchain_openai import ChatOpenAIchat = ChatOpenAI(openai_api_base=os.getenv("OPENAI_API_BASE"),openai_api_key=os.getenv("OPENAI_API_KEY"),temperature=0
    )messages = [{"role": "system", "content": "You will receive a user's query and possible content where the answer might be. If the answer is found, provide it, if not, state that the answer does not exist."},{"role": "user", "content": prompt}
    ]response = chat.invoke(messages)
    print(response)
    
    • 使用 ChatOpenAI 调用 OpenAI 的聊天模型。
    • 定义对话上下文:
      • 系统消息:告诉模型用户会提供问题和可能的内容,要求模型判断答案是否存在。
      • 用户消息:将生成的提示作为输入。
    • 调用 chat.invoke 生成回答并打印。

  1. 定义工具函数
    from langchain_core.tools import tool@tool
    def lookup_swiss_airline_policy(query: str) -> str:"""Search within the Swiss Airline's company policies to check whether certain options are permitted. Input should be a search query."""vectordb = Chroma(collection_name="rag-chroma",persist_directory=str(here(VECTORDB_DIR)),embedding_function=OpenAIEmbeddings())docs = vectordb.similarity_search(query, k=K)return "\n\n".join([doc.page_content for doc in docs])
    
    • 使用 @tool 装饰器创建一个可复用工具函数
    • 功能
      • 接受查询 query
      • 从向量数据库中检索相关文档。
      • 返回检索到的文档内容。
    • 说明信息:提供关于工具功能的描述,供其他程序或用户调用时参考。

  1. 工具函数的调用
    print(lookup_swiss_airline_policy.name)
    print(lookup_swiss_airline_policy.args)
    print(lookup_swiss_airline_policy.description)pprint(lookup_swiss_airline_policy.invoke("can I cancel my ticket?"))
    
    • 打印工具的元信息(名称、参数、描述)。
    • 调用 lookup_swiss_airline_policy.invoke,检索 “can I cancel my ticket?” 的相关内容并打印结果。

工具函数的执行结果:
在这里插入图片描述


运行流程总结

  1. 加载向量数据库,并初始化嵌入模型。
  2. 用户输入问题。
  3. 从数据库中检索与问题相关的文档。
  4. 将问题和文档内容发送至聊天模型,生成答案。
  5. 定义工具函数供后续复用。

用途与适用场景

  • 用途:实现基于文档的问答系统,用于快速查询特定文档的内容。
  • 适用场景
    • 公司政策文档检索(如航空政策)。
    • 产品说明文档或技术支持文档查询。
    • 法律条款、合同内容等信息的检索与问答。
http://www.yayakq.cn/news/542389/

相关文章:

  • 企业网站开发平台需要优化的网站有哪些?
  • 上海住房城乡建设网站不买域名怎么做网站
  • 贵阳市建设城乡规划局网站网站建设教程这篇苏州久远网络
  • 不用写代码可以做网站的软件智慧团建网站注册
  • 男生为女生做网站山东住房和城乡建设局网站首页
  • 手表二级市场网站中山seo外包
  • 技术支持 重庆网站互动平台怎么注册
  • 如何高效率的建设网站成都旅游路线规划
  • 小天才电话手表网站网站建设流程步骤为需求分析
  • 网站开发过程记录威海自适应网站建设
  • 网站建设与维护管理办法网站建设与维护的工资
  • 用中文版wordpress建英文站一件代发货源开网店货源
  • 长沙网站运营外包公司通用ppt模板免费下载
  • 帝国cms生成网站地图cetos做网站
  • 北京王府井在哪个区常用的seo工具
  • 微信商城和微网站wordpress 禁止地区ip
  • 泰安公司网站建设wordpress 首页动画
  • 郑州网站建设汉狮网站后台的建设
  • 河北网站制作公司哪家好济宁哪里有网站建设
  • 汉台网站制作哪些网站可以做养殖的广告
  • 企业做网站需要什么手续吗大岭山网站
  • 社区信息建设网站网站建设7个基本流程步骤有哪些
  • 无上光东莞网站深圳做官网公司
  • 如何用网站做推广深圳软件系统开发
  • 做淘宝客最好的网站是什么网站深圳vi设计公司全力设计
  • 自己搭建一个网站英文公司网站模板
  • 重庆市建设工程信息网官网安全监督信息网北京网络seo推广公司
  • 十大下载网站免费安装合肥做网站的公
  • 免费建立网站软件陕西省建设安全协会网站
  • 网做英文网站网站如何进行优化