不清楚 Azure OpenAI 端点 /extensions/chat/completions 如何在幕后进行检索

gin*_*ius 7 azure azure-cognitive-search openai-api azure-openai

我正在尝试这个示例聊天应用程序,它从认知搜索中检索最相关的文档,以帮助聊天机器人回答用户的问题。文档检索本身不是应用程序代码的一部分,而是在应用程序调用“/deployments/{deployment-id}/extensions/chat/completions”端点时被抽象出来。

我无法从文档中理解/deployments/{deployment-id}/extensions/chat/completions端点如何在幕后与认知搜索交互。背景是我试图了解它提供的灵活性以及如果我们想要更改某些内容,需要如何手动实现文档检索和集成到法学硕士的提示中。

扩展程序调用什么认知搜索端点以及使用哪些参数?以下是我自己发送的 API 请求示例,用于尝试重现工具引用中的前 5 个结果

curl --location 'https://[deployment].search.windows.net/indexes/[index]/docs/search?api-version=2023-07-01-Preview' \
--header 'Content-Type: application/json' \
--header 'api-key: [key]' \
--data '{  
     "queryType": [I tried full, simple and semantic here, semantic with different settings for other required parameters]
     "search": "[question text]",  
     "top": 5
   }  '
Run Code Online (Sandbox Code Playgroud)

我得到的文档与 Azure 门户中认知搜索的搜索资源管理器中返回的文档相同,但它们与请求返回的文档不同extensions/chat/completions。对于相同的块,相关性分数有时相同,但有时也不同。您能透露一下为什么会发生这种情况吗?

在 Azure OpenAI 游乐场和此示例应用程序中实现的文档检索中未使用嵌入,这是否正确?

是否有更多的系统文本隐藏在某个地方,指示模型查看源代码并以这种 [doc1] 格式提供参考?如果我们对引用准确性不满意,我们将如何修改?

Ols*_*ard 2

该 API 处于预览状态,通常是相当“黑匣子”。

它确实允许使用多种不同的方式来搜索索引(例如,您可以选择是否需要语义、向量、vectorSimpleHybrid 或 vectorSemanticHybrid),但从文档中尚不清楚(我认为这是设计使然),例如,向量搜索只是向量化最后一个用户消息并进行搜索,或者是否有某种 langchain-esq 后台服务要求 LLM 生成搜索查询,然后将其提交给认知搜索。

您可以阅读文档并将 dataSources 中的选项与其余 API 文档进行交叉引用以进行认知搜索,但这对解释底层过程起不了多大作用。