Faiss 索引查找#
Faiss 索引查找是一个工具,专为查询用户提供的基于 Faiss 的向量存储而设计。结合我们的大型语言模型 (LLM) 工具,它使用户能够从领域知识库中提取上下文相关的N信息。
要求#
对于 AzureML 用户,该工具已安装在默认映像中,无需额外安装即可使用。
对于本地用户,如果您的索引存储在本地路径中,
pip install promptflow-vectordb
如果您的索引存储在 Azure 存储中,
pip install promptflow-vectordb[azure]
先决条件#
对于 AzureML 用户,#
步骤 1. 准备 Azure Blob 存储上的可访问路径。如果需要创建新的存储帐户,请参阅此指南:Azure 存储帐户。
步骤 2. 在 Azure Blob 存储上创建相关的基于 Faiss 的索引文件。我们支持 LangChain 格式(index.faiss + index.pkl)的索引文件,这些文件可以通过使用我们的 promptflow-vectordb SDK 或按照LangChain 文档中的快速指南进行准备。请参阅创建 Faiss 索引的示例代码中的说明,以使用 promptflow-vectordb SDK 构建索引。
步骤 3. 根据您放置索引文件的位置,应向 promptflow 运行时使用的标识授予某些角色。请参阅分配 Azure 角色的步骤。
位置
角色
工作区数据存储或工作区默认 Blob
AzureML 数据科学家
其他 Blob
存储 Blob 数据读取器
对于本地用户,#
仅通过执行上述步骤 2 在本地路径中创建基于 Faiss 的索引文件。
输入#
该工具接受以下输入
名称 |
类型 |
描述 |
必填 |
---|---|---|---|
路径 |
字符串 |
向量存储的 URL 或路径。 |
是 |
向量 |
list[float] |
要查询的目标向量,可通过 LLM 工具生成。 |
是 |
top_k |
整数 |
要返回的得分最高实体的数量。默认值为 3。 |
No |
输出#
以下是该工具返回的 JSON 格式响应示例,其中包含得分最高的 k 个实体。该实体遵循我们的 promptflow-vectordb SDK 提供的向量搜索结果的通用架构。对于 Faiss 索引搜索,将填充以下字段:
字段名称 |
类型 |
描述 |
---|---|---|
text |
字符串 |
实体的文本 |
得分 |
float |
实体与查询向量之间的距离 |
metadata |
dict |
用户在创建索引时提供的自定义键值对 |
输出
[
{
"metadata": {
"link": "http://sample_link_0",
"title": "title0"
},
"original_entity": null,
"score": 0,
"text": "sample text #0",
"vector": null
},
{
"metadata": {
"link": "http://sample_link_1",
"title": "title1"
},
"original_entity": null,
"score": 0.05000000447034836,
"text": "sample text #1",
"vector": null
},
{
"metadata": {
"link": "http://sample_link_2",
"title": "title2"
},
"original_entity": null,
"score": 0.20000001788139343,
"text": "sample text #2",
"vector": null
}
]