Azure OpenAI基础模型是不包含企业私域数据. 如果使用Fine tuning又比较有难度. 本文我们探讨优雅地为OpenAI注入私域数据.
我们可以借助于Azure Cognitive Search来完成这个目标.
Azure Cognitive Search(认知搜索服务)可以添加多种数据源,如下所示:
通过认知搜索服务添加Storage Account,并针对存储空间里的文档进行处理,然后进行搜索查询的方案我们之前文章已经介绍了很多,本次我们介绍对接Azure SQL DB。
选择Azure SQL Database以后,在Choose an existing connection中可以自动检测到Synapse SQL Pool,可以成功添加:
接下来可以看到数据库中的table,选择一个table作为数据源.
我们添加的这个数据库表的结构如下(只列出一行):
接下来创建索引,创建索引的时候,有几个字段需要设置:
- Retrievable:决定哪些字段可以在搜索结果中显示。
- Filterable:指定哪些字段可以用来过滤搜索结果。
- Sortable:指定哪些字段可以用来对搜索结果进行排序。
- Facetable:指定哪些字段可以用来创建分类导航。
- Searchable:指定哪些字段可以用来进行全文搜索。
Analyzer:用于指定在索引和查询时应用于字段的文本分析器。文本分析器是全文搜索引擎的一个组件,负责在索引和查询执行期间处理字符串。文本分析器可以对字符串进行转换,例如删除非关键词和标点符号、将短语和连字符词拆分成组成部分、将大写字母转换为小写字母以及将词汇还原为原始词根形式以提高存储效率和匹配能力[1]。
在 Azure Cognitive Search 中,分析器会自动应用于标记为“可搜索”的字符串字段。默认情况下,Azure Cognitive Search 使用 Apache Lucene Standard 分析器(标准 Lucene),该分析器根据“Unicode 文本分割”规则将文本分解为元素。标准分析器将所有字符转换为小写形式[1]。
6.Suggester:用于指定哪些字段可以用来做自动完成和建议。自动完成和建议是搜索引擎中的一种功能,它可以在用户输入查询时实时提供相关的搜索建议。这些建议通常基于用户输入的部分文本,以帮助用户更快地找到他们正在寻找的信息。自动完成和建议功能可以提高用户体验,因为它们可以减少用户输入的时间和错误,并帮助用户更快地找到相关结果。
按照需求进行设置:
添加成功后,索引创建成功,载入的数据量与table的行数是相同的:
在index进行搜索:
通过Azure OpenAI playground最新preview的plugin对接认知服务,添加的时候需要进行字段map:
Content data、文件名、Title 和 URL 是指在搜索索引中的字段。这些字段用于存储和检索与文档相关的信息。以下是这些字段的简要说明:
- Content data:这是文档中的实际内容,例如文章正文、博客文章或产品描述。这个字段通常用于搜索引擎的主要搜索功能,以便在用户查询时返回相关结果。
- 文件名:这是文档的文件名,它可以帮助用户识别文档。在搜索结果中,文件名可以作为文档的一个标识符。
- Title:这是文档的标题,它通常是文档内容的简短描述。在搜索结果中,标题可以帮助用户快速了解文档的主题。
- URL:这是文档的网址,用户可以通过这个网址访问文档。在搜索结果中,URL可以帮助用户直接访问相关文档。
对接完毕后,通过openai查询数据,效果并不是很好,不仅没有语言泛化能力,连基本的 表查询都有问题。
所以,针对SQL中纯关系型数据库表,并且需要精准查询、范围字段的,通过认知服务并不是很合适。如果想实现查询的语言泛化,显然通过GPT生成SQL效率更高。
接下来我们进行另外一个实验,使用相同的环境,我但我上传另外一个数据库表文件:
下载并运行demo app后,我进行全文检索:
支持关键词搜索:
我们同样使用Azure OpenAI playground并以新的表作为数据源.Content选的列,只能是索引中searchable的列:
然后询问房屋信息,效果还是不错的:
User: I need house in Seattle, near lake.
Assistant:Sure, I can help you find a house in Seattle near a lake. Here are some properties I found:
- "This is a condo and is brand new. Enjoy lake front property located near a small lake and features a home office, a garden and a guest house" 1 .
- "This is a tenement house and is a dream home. Enjoy lake front property located near a small lake and features an office, wood floors and a guest house" 2 .
- "This is a bungalow and is perfect for entertaining. Enjoy lake front property located near a small lake and features an attached garage, beautiful bedroom floors and a guest house" 3 .
- "This is a condominium and is freshly painted. Enjoy lake front property located near a small lake and features a gas log fireplace, wood floors and a guest house" 4 .
- "This is a apartment residence and is move in condition. This property has lake access located near a small lake and features miele appliances, a generous backyard and a guest house" 5 .Let me know if you need more information on any of these properties.
User: Which is biggest house in your 5 options?
Assistant:The bungalow located in Bellevue 1 has a bedroom floors and an attached garage, so it might be the biggest house among the given options. However, the documents do not indicate the exact size of the properties, so I cannot be certain. Would you like more information on this property or other options?
部署成webapp:
可以询问基于数据库表的问题,语言泛化能力不错:
https://github.com/microsoft/sample-app-aoai-chatGPT
结论:Azure Cognitive search可以对接DB上的table,但如果是需要精准查询的纯关系型数据表,认知搜索服务是不合适的。如果需要针对表进行模糊查询,然后再使用GPT进行处理,是比较合适的。
本站资源部分来自网友投稿,如有侵犯你的权益请联系管理员或给邮箱发送邮件PubwinSoft@foxmail.com 我们会第一时间进行审核删除。
站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!请在下载24小时内删除!
如果遇到评论可下载的文章,评论后刷新页面点击“对应的蓝字按钮”即可跳转到下载页面!
本站资源少部分采用7z压缩,为防止有人压缩软件不支持7z格式,7z解压,建议下载7-zip,zip、rar解压,建议下载WinRAR。
温馨提示:本站部分付费下载资源收取的费用为资源收集整理费用,并非资源费用,不对下载的资源提供任何技术支持及售后服务。