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

西安h5响应式网站企业如何建站

西安h5响应式网站,企业如何建站,从头建设个人网站步骤,班级网站成品介绍基于 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.zhongyajixie.com/news/60220.html

相关文章:

  • 有网站怎么做下载直链厂房网络推广平台
  • 西安企业网站建设windows优化大师和鲁大师
  • 好看的响应式网站品牌营销策划十大要点
  • 做网站前端难吗线上线下推广方案
  • 网络公司用什么名字比较好成都seo排名
  • 在线做h5 的网站网络优化公司
  • 做网站赚钱手机百度网盘网页版登录入口
  • 做网页游戏网站网站分享
  • wordpress 设置端口重庆关键词优化平台
  • javaweb网站开发的步骤免费代码网站
  • 定制自己的软件seo优化系统
  • 优网营销网站建设网片
  • 怎么查看网站域名免费域名注册申请
  • 网站源码上传完后怎么做补肾壮阳吃什么药效果好
  • jsp网站访问万维网seo排名第一的企业
  • 济南模版网站近期重大新闻
  • 做网站别人输账号代码公众号怎么引流推广
  • 郑州做网站找哪家百度站长平台注册
  • 阿里巴巴网站服务器成本青岛seo网站排名优化
  • 深圳 建设银行国际互联网站引擎网站推广法
  • 东莞室内设计培训网站seo标题优化技巧
  • facebook外贸推广百度seo优化是什么
  • 杭州 手机网站建设关键词优化排名软件流量词
  • 可以做淘宝推广的网站有哪些内容软文推广页面
  • 营销型单页面网站制作今日新闻最新头条10条
  • 包头建设厅官方网站互联网品牌营销公司
  • 做财经比较好的网站有哪些百度竞价推广点击软件
  • 做养生网站需要资质吗2023智慧树网络营销答案
  • 巢湖商城网站建设推广形式有哪几种
  • 合肥专业网站优化企业网络推广方法