azure - (?) 问号对矢量搜索的影响

标签 azure azure-cognitive-search azure-openai

我们使用 azure 认知搜索作为向量数据库,我们使用 azure open ai Ada02 模型为查询和文档(RAG 模式)生成嵌入。

我们观察到同一问题在使用和不使用 ? 的情况下会产生不同的结果。 (问号)

  1. 什么是 Jade 米?
  2. 什么是 Jade 米
  3. 什么是 Jade 米?

问题

  1. “?”的影响是什么?矢量搜索,尤其是 Azure 认知搜索。
  2. 处理它的标准方法是什么。
  3. Azure 认知矢量搜索是否区分大小写。

谢谢-Nen

最佳答案

嵌入不是输入的逐字符表示,它们是到连续向量空间的映射,因此预计不同的输入,无论差异有多小,都会产生不同的向量,因此可能会拉动搜索期间的不同结果。

它们应该很接近,因为它们在概念上是相同的,但它们不会是相同的向量。

这里有两种方法可以进一步深入研究这个问题,首先直接比较嵌入,其次查看标记化方面:

比较嵌入

使用嵌入 API,您可以直接查看向量之间的距离,将它们与搜索/检索详细信息分开:

a = get_embedding("What is Maize?", engine="embedding")
b = get_embedding("What is Maize ?", engine="embedding")
c = get_embedding("What is Maize", engine="embedding")
d = get_embedding("What is maize?", engine="embedding")
e = get_embedding("What is corn?", engine="embedding")
f = get_embedding("What is spinach?", engine="embedding")
print("'?' vs ' ?'", cosine_similarity(a, b))
print("'?' vs ''", cosine_similarity(a, c))
print("' ?' vs ''", cosine_similarity(b, c))
print("Maize vs maize", cosine_similarity(a, d))
print("maize vs corn", cosine_similarity(a, e))
print("maize vs spinach", cosine_similarity(a, f))

我得到:

'?' vs ' ?' 0.9789760561431554
'?' vs '' 0.9726684993796191
' ?' vs '' 0.9646235430443343
Maize vs maize 0.982432778637022
maize vs corn 0.9262367100603125
maize vs spinach 0.8305263015872602

OpenAI 标记器:

您可以在这里尝试分词器:https://platform.openai.com/tokenizer 您可以做出两个观察:a) “?”被认为是一个 token (例如,不被忽略或类似的东西),并且b)不同的情况产生不同的 token 。

Screenshot


Screenshot


Screenshot


Screenshot

关于azure - (?) 问号对矢量搜索的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76959516/

相关文章:

Azure 开放 AI 服务 - 自定义模型

Azure OpenAI 嵌入与 OpenAI 嵌入

unit-testing - 通过单元测试

azure - APIM 上的客户端证书验证

caching - azure共享缓存和新的azure redis缓存有什么区别?

azure - 如何在Azure搜索中通过两个字符串过滤集合过滤器?

azure - 如何使用 PowerShell 将 Api 权限添加到 Azure 应用程序注册

Azure 认知搜索突出显示修剪

Azure 数据工厂 v2 无法将数据发送到 Azure 搜索

azure - OpenAI 嵌入 API : How embeddings work?