使用Azure OpenAI进行“与公司文件交流”

使用Azure OpenAI进行公司文件交流

大型语言模型(LLMs)如ChatGPT通过训练来自互联网上海量文本的数十亿个参数,存储了庞大的知识库。然而,它们的知识仅限于它们训练所使用的文本数据。对于ChatGPT而言,这意味着它不了解2021年9月之后的任何内容,也不了解防火墙背后存储的私有数据,例如专有公司数据。

到目前为止,最受欢迎、最易于使用的方法来增加这种知识限制是一种称为检索增强生成(Retrieval Augmented Generation,RAG)的方法(另一种方法是微调)。它的工作原理是将LLM不了解的基于文本的文档存储在外部数据库中。当用户向LLM提问时,系统从该数据库中检索相关文档,并提供给LLM作为参考,以回答用户的问题。这被称为上下文学习,或者更简单地说,是提示填充。在大多数情况下,RAG方法优于LLM微调,后者通常更复杂,需要专门的硬件(GPU)和技能(例如机器学习),并且通常更昂贵。

微软Azure为其客户推出了一种快速启动解决方案,利用RAG方法来增强LLM对公司文档的知识。作为一个对话系统代理,它使用托管在Azure基础设施上(而不是OpenAI的)的OpenAI LLMs(gpt-3.5/ChatGPT或gpt-4),通过完成API端点由应用程序调用。使用此应用程序受到严格的Azure数据保护政策的保护,因此在使用过程中产生的任何用户交互和共享的数据都是安全和私密的。价格是基于每个标记的使用。

下面的示例聊天交互演示了使用一个关于社会保障灾难贷款计划的示例文档作为参考的应用程序。LLM已知会产生“幻觉”,即给出不真实或虚构的回答。为了减轻这一点,每个回答都附带一个引用,引用了回答所基于的源文档。这使用户可以验证给定回答的真实性。

每个回答都附带一个引用(黄色)。点击放大。

部署选项

该解决方案可以作为Web应用程序或作为Power Virtual Agent(PVA)机器人直接从Azure OpenAI Chat playground部署。需要设置数据源,然后根据两种可用的部署选项进行部署。

在部署应用程序之前,您可以设置聊天机器人的‘系统消息’。

Web应用程序

Web应用程序是一种基本的聊天界面,可以通过笔记本电脑或移动设备的浏览器访问。该Web应用程序已由Microsoft以MIT许可证的形式发布为开源,允许商业使用。GitHub存储库可以在此处找到。客户可以根据需要自由定制应用程序。Web应用程序可以在Azure中作为应用服务一键部署‘原样’部署,这将使用Azure徽标和默认颜色方案进行部署。

使用自定义品牌的示例部署。

Power Virtual Agent

PVA机器人可以部署在公司的网站上。它还具有本地集成功能,可以轻松嵌入其他Microsoft产品,如Sharepoint站点和MS Teams。

PVA机器人嵌入在Sharepoint站点中。图片来源
在MS Teams中嵌入的PVA机器人。图片来源

将公司文件加载到聊天机器人的知识数据库中

以下类型的文件可加载到机器人的数据库中:txt、PDF、Word文件、PowerPoint文件和HTML。建议使用文本丰富的文档,如公司政策、合同、操作说明等,用于这个聊天机器人。不建议使用表格数据,例如存储在Excel/CSV或关系数据库中的数据。上传的文件将存储在客户的Azure环境中的存储Blob中,并且会保持私密。

聊天机器人从Azure认知搜索服务的索引中查询数据。它有一个直观的索引器,可以从单个位置(例如本地文件夹或Azure Blob)加载所有支持的文档类型,并将其加载到索引中。

搜索服务(根据用户查询/输入与索引中的相关文档进行比较,作为聊天机器人响应的基础)支持基于BM25搜索算法的词法或关键字比较,以及基于嵌入/向量的搜索算法,如余弦相似度或点积。它还支持这两者的混合-全文搜索和向量搜索的组合。

参考资料:

Azure上的OpenAI数据(预览)