基于Azure OpenAI、Langchain构建企业内部知识库解决回答出域的问题


在这里插入图片描述

1. 背景

基于Azure OpenAI、Langchain构建企业内部知识库,当提出的问题,在企业内部知识库中不存在的时候,会回答企业知识库以外的内容,会给提问者造成信息的误解。回答的精准度也不高。

2. 具体实现代码如下

def ask_question(_temperature, _stream, _messages, _tenant_name, _collection_name, _verbose):
    # 获取embedding 模型对象
    embeddings = OpenAIEmbeddings(
        deployment=_deployment,
        model=_model,
        chunk_size=1
    )

    # 获取pgvector 连接字符串
    CONNECTION_STRING = PGVector.connection_string_from_db_params(
        driver=_driver,
        host=_host,
        port=_port,
        database=_database,
        user=_user,
        password=_password,
    )

    # 获取pgvector 模型对象
    store = PGVector.connection_string_from_db_params(
        driver=_driver,
        host=_host,
        port=_port,
        database=_database,
        user=_user,
        password=_password,
    )

    # 获取chat 模型对象
    retriever = store.as_retriever()

    # 构造问答prompt
    prompt_template = """Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer. 

    {context}

    Question: {question}
    Helpful Answer:"""
    prompt = PromptTemplate(
        template=prompt_template, input_variables=["context", "question"]
    )

    llmAzureOpenAI = AzureChatOpenAI(
        openai_api_type=_openai_api_type,
        openai_api_base=_openai_api_base,
        openai_api_version=_openai_api_version,
        deployment_name=_deployment_name,
        model_name=_model_name,
        openai_api_key=_openai_api_key,
        streaming=_stream,
        temperature=_temperature,
        verbose=_verbose
    )
    
    question_generator = LLMChain(llm=llmAzureOpenAI, prompt=CONDENSE_QUESTION_PROMPT)
    
    doc_chain = load_qa_chain(llmAzureOpenAI, chain_type="stuff", prompt=prompt, verbose=_verbose)
    
    chain = ConversationalRetrievalChain(
        retriever=retriever,
        combine_docs_chain=doc_chain,
        question_generator=question_generator,
        return_source_documents=True,
    )
    
    # 提高召回精读,默认0.8
    vectordbkwargs = {"search_distance": 0.9}

    chat_history = []
    result = chain({'question': _messages, 'chat_history': chat_history, "vectordbkwargs": vectordbkwargs})
    chat_history.append((_messages, result['answer']))

    return result['answer']

3. 最后

我司的FinOps产品基于Azure OpenAI、PGVector提供企业私有智能助手解决方案。该解决方案包括私有知识库、私有智能客服、云专家和运维专家等功能,旨在为客户提供更快速、便捷的服务和支持。通过利用人工智能和自然语言处理技术,联蔚的FinOps产品能够帮助企业进行云消费的全生命周期管理,从而极大地节省云支出并提升效率。

如果有云上财务管理、企业私有智能助手的需求,可以关注我们的微信公众号、详情查看联蔚盘云官网

相关链接:

联蔚FinOps平台全新升级:资源优化报告与华为云助您智慧管理多云环境

联蔚盘云成为Gartner《Cool Vendors in Cloud》报告中亚洲唯一云服务商

Azure OpenAI助力联蔚盘云企业智能助手全面上线,引领智能化转型新纪元

联蔚荣获微软Azure OpenAI 合作伙伴 Level 300 认证

阿里云资源优化正式上线!最大程度节约成本,提升业务效能!

FinOps升级!实现财务精准管控,让企业财务更高效!

联蔚FinOps智能助手,为您打造专属的云上财务管理专家

### LangChain在本地知识库的应用 LangChain是一个开源的大语言模型应用开发框架,支持多种模型和数据源,适用于智能问答、知识库、数据分析等场景[^2]。为了实现这些功能,在本地环境中配置和使用LangChain主要分为几个部分。 #### 配置环境变量 对于特定的服务提供商,比如Azure OpenAI服务,需要先设置必要的环境变量来完成认证过程: ```python import os os.environ["AZURE_OPENAI_ENDPOINT"] = "your_endpoint" os.environ["AZURE_OPENAI_API_KEY"] = "your_api_key" ``` 上述代码片段展示了如何为Azure OpenAI API指定端点和API密钥[^3]。 #### 构建嵌入模型账户配置 除了基本的身份验证外,还需要准备用于创建向量表示的嵌入模型。这一步骤至关重要,因为它决定了后续检索机制的有效性和准确性。通常情况下,会采用预训练好的大型语言模型作为基础,再针对具体任务微调参数以优化性能表现。 #### 初始化FAISS索引结构 考虑到查询速度的重要性,引入高效的相似度搜索算法成为必然选择。FAISS(Facebook AI Similarity Search),作为一种强大的矢量化搜索引擎,被广泛应用于此类场合。通过建立倒排列表并利用近似最近邻技术加速查找过程,从而极大地提高了处理大规模数据集的能力。 #### 整合上下文感知能力 为了让系统具备理解对话背景以及动态调整回复策略的功能,必须将选定的语言模型同外部资源紧密结合起来。这意味着不仅要提供静态的知识条目供查阅,还要允许实时获取最新的信息更新,确保交互体验更加自然流畅[^4]。 综上所述,借助于LangChain框架所提供的工具包和服务接口,开发者可以快速搭建起一套完整的本地化解决方案,满足不同业务需求下的定制化要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值