我正在构建一个 Azure AI 搜索 + OpenAI 聊天机器人,用我自己的数据“说话”。我在体育领域,我们需要创建一个能够从我们的 Excel 文件中检索实际数据的聊天机器人。具有并执行基本的汇总、排序和过滤任务。我们的数据主要是运动员的历史数据。这是我们所拥有的内容的快速浏览:
玩家 | 评分 | 游戏中 | 危险信号 | 净资产 | 联赛 |
---|---|---|---|---|---|
约翰·多伊 | 87 | 150 | 2 | 12,500,000 | 阿尔法联赛 |
简·史密斯 | 92 | 200 | 1 | 25,000,000 | 测试联赛 |
最大功率 | 75 | 180 | 3 | 10,000,000 | 伽玛联赛 |
露西心 | 68 | 210 | 4 | 15,000,000 | 三角洲联赛 |
杰克·亨特 | 80 | 170 | 2 | 8,000,000 | 厄普西隆联赛 |
艾玛·斯通 | 95 | 220 | 1 | 30,000,000 | 泽塔联盟 |
利亚姆·奈特 | 78 | 160 | 2 | 11,500,000 | 埃塔联赛 |
艾娃强 | 85 | 190 | 3 | 14,000,000 | 西塔联盟 |
诺亚·斯威夫特 | 90 | 230 | 1 | 20,000,000 | 艾奥塔联赛 |
米娅·奎克 | 83 | 175 | 2 | 9,000,000 | 河童联赛 |
我已经成功创建了一个带有人工智能搜索的索引和语义排名器,将我们的数据分成块,使搜索算法更容易、更易于管理。我们还决定包含一个包含每个功能定义的文件。例如,“净资产”是运动员出于商业和财务目的以美元计算的价值。
但是当我问我的聊天机器人基本查询或问题时,例如:
“简·史密斯的得分是多少?” 不是检索 92,而是 说:“抱歉,我没有足够的数据来回答这个问题。”
当我问“净收入最高的前 3 名运动员是谁”时 价值?”而不是给出按玩家及其净资产排序的列表, 它只是检索,“抱歉,我没有足够的数据来回答这个问题 问题。”
请注意,我的数据非常广泛,有近 15,000 个条目,我已将它们分成非常小的信息块,保持标题不会丢失上下文。
对于那些在聊天机器人中处理过包含大量定量和定性信息的表格数据的人,您建议解决此类问题的最佳方法是什么?
我目前正在将 Excel 文件分成较小的 Excel 文件,这些文件采用 XML 格式。将它们分成 JSON、CSV 或 .txt 文件块更好吗?我非常感谢那些使用过此类数据的人提供的任何帮助。谢谢你
对于AI搜索中的查询,使用过滤器并对JSON进行排序是最好的格式。但是,要查询类似下面示例的内容,纯文本格式(例如
.txt
、.pdf
或 .html
)更合适:
Who are the top 3 athletes with the highest net worth?
What is the scoring of Jane Smith?
在这种情况下,无需将 Excel 文件转换为其他格式。相反,创建一个包含仅包含 Excel 数据的字段的索引,如下所示。
我已将 Excel 文件上传到 Blob 存储并使用它创建了一个数据源。
然后,我使用 import data 选项创建了索引。
接下来,您将能够自定义该字段。
对索引执行任何必要的自定义,但保持内容字段不变。索引将如下所示。
在 OpenAI 聊天游乐场中,添加数据源作为 AI 搜索索引,并选择之前创建的索引。
输出:
和
本质上,数据应该是字符串类型和纯文本。 PDF 对于此类任务会更有效。