e768098d0e
Flake8 Lint / flake8 (push) Waiting to run
Spell check CI / Spell_Check (push) Waiting to run
tools_continuous_delivery / Private PyPI non-main branch release (push) Has been skipped
tools_continuous_delivery / Private PyPI main branch release (push) Failing after 2m42s
Publish Promptflow Doc / Build (push) Has been cancelled
Publish Promptflow Doc / Deploy (push) Has been cancelled
87 lines
4.0 KiB
Markdown
87 lines
4.0 KiB
Markdown
# Faiss Index Lookup
|
|
|
|
Faiss Index Lookup is a tool tailored for querying within a user-provided Faiss-based vector store. In combination with our Large Language Model (LLM) tool, it empowers users to extract contextually relevant information from a domain knowledge base.
|
|
|
|
## Requirements
|
|
- For AzureML users, the tool is installed in default image, you can use the tool without extra installation.
|
|
- For local users, if your index is stored in local path,
|
|
|
|
`pip install promptflow-vectordb`
|
|
|
|
if your index is stored in Azure storage,
|
|
|
|
`pip install promptflow-vectordb[azure]`
|
|
|
|
## Prerequisites
|
|
### For AzureML users,
|
|
- step 1. Prepare an accessible path on Azure Blob Storage. Here's the guide if a new storage account needs to be created: [Azure Storage Account](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-create?tabs=azure-portal).
|
|
- step 2. Create related Faiss-based index files on Azure Blob Storage. We support the LangChain format (index.faiss + index.pkl) for the index files, which can be prepared either by employing our promptflow-vectordb SDK or following the quick guide from [LangChain documentation](https://python.langchain.com/docs/integrations/vectorstores/faiss). Please refer to the instructions of <a href="https://aka.ms/pf-sample-build-faiss-index" target="_blank">An example code for creating Faiss index</a> for building index using promptflow-vectordb SDK.
|
|
- step 3. Based on where you put your own index files, the identity used by the promptflow runtime should be granted with certain roles. Please refer to [Steps to assign an Azure role](https://learn.microsoft.com/en-us/azure/role-based-access-control/role-assignments-steps):
|
|
|
|
| Location | Role |
|
|
| ---- | ---- |
|
|
| workspace datastores or workspace default blob | AzureML Data Scientist |
|
|
| other blobs | Storage Blob Data Reader |
|
|
|
|
### For local users,
|
|
- Create Faiss-based index files in local path by only doing step 2 above.
|
|
|
|
## Inputs
|
|
|
|
The tool accepts the following inputs:
|
|
|
|
| Name | Type | Description | Required |
|
|
| ---- | ---- | ----------- | -------- |
|
|
| path | string | URL or path for the vector store.<br><br>local path (for local users):<br>`<local_path_to_the_index_folder>`<br><br> Azure blob URL format (with [azure] extra installed):<br>https://`<account_name>`.blob.core.windows.net/`<container_name>`/`<path_and_folder_name>`.<br><br>AML datastore URL format (with [azure] extra installed):<br>azureml://subscriptions/`<your_subscription>`/resourcegroups/`<your_resource_group>`/workspaces/`<your_workspace>`/data/`<data_path>`<br><br>public http/https URL (for public demonstration):<br>http(s)://`<path_and_folder_name>` | Yes |
|
|
| vector | list[float] | The target vector to be queried, which can be generated by the LLM tool. | Yes |
|
|
| top_k | integer | The count of top-scored entities to return. Default value is 3. | No |
|
|
|
|
## Outputs
|
|
|
|
The following is an example for JSON format response returned by the tool, which includes the top-k scored entities. The entity follows a generic schema of vector search result provided by our promptflow-vectordb SDK. For the Faiss Index Search, the following fields are populated:
|
|
|
|
| Field Name | Type | Description |
|
|
| ---- | ---- | ----------- |
|
|
| text | string | Text of the entity |
|
|
| score | float | Distance between the entity and the query vector |
|
|
| metadata | dict | Customized key-value pairs provided by user when create the index |
|
|
|
|
<details>
|
|
<summary>Output</summary>
|
|
|
|
```json
|
|
[
|
|
{
|
|
"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
|
|
}
|
|
]
|
|
|
|
```
|
|
</details> |