神经稀疏查询
2.11 版引入
在神经稀疏搜索中使用neural_sparse
查询进行向量字段搜索。
您可以通过以下方式运行查询:
- 提供稀疏向量嵌入以进行匹配。有关更多信息,请参阅使用原始向量的神经稀疏搜索。
"neural_sparse": { "<vector_field>": { "query_tokens": { "<token>": <weight>, ... } } }
- 提供要分词的文本并用于匹配。要对文本进行分词,您可以使用以下组件:
- 内置 DL 模型分析器
"neural_sparse": { "<vector_field>": { "query_text": "<input text>", "analyzer": "bert-uncased" } }
- 分词器模型
"neural_sparse": { "<vector_field>": { "query_text": "<input text>", "model_id": "<model ID>" } }
有关更多信息,请参阅自动生成稀疏向量嵌入。
- 内置 DL 模型分析器
请求正文字段
顶级vector_field
指定了要运行搜索查询的向量字段。您必须指定query_text
或query_tokens
来定义输入。以下字段可用于配置查询:
字段 | 数据类型 | 必需/可选 | 描述 |
---|---|---|---|
query_text | 字符串 | 可选 | 要转换为稀疏向量嵌入的查询文本。必须指定query_text 或query_tokens 之一。 |
分析器 | 字符串 | 可选 | 与query_text 一起使用。指定用于对查询文本进行分词的内置 DL 模型分析器。有效值为bert-uncased 和mbert-uncased 。默认为bert-uncased 。如果未指定model_id 或analyzer ,则使用默认分析器(bert-uncased )对文本进行分词。不能与model_id 同时指定。有关更多信息,请参阅DL 模型分析器。 |
model_id | 字符串 | 可选 | 与query_text 一起使用。用于从查询文本生成向量嵌入的稀疏编码模型(用于双编码器模式)或分词器(用于仅文档模式)的 ID。模型/分词器必须先部署在 OpenSearch 中才能在神经稀疏搜索中使用。有关更多信息,请参阅在 OpenSearch 中使用自定义模型和自动生成稀疏向量嵌入。有关在神经稀疏查询中设置默认模型 ID 的信息,请参阅neural_query_enricher 。不能与analyzer 同时指定。 |
query_tokens | 词元(字符串)到权重(浮点数)的映射 | 可选 | 一种以词元及其权重形式表示的原始稀疏向量。用作query_text 的替代方案,用于直接向量输入。必须指定query_text 或query_tokens 之一。 |
max_token_score | 浮点型 | 可选 | (已废弃)此参数自 OpenSearch 2.12 起已废弃。它仅为向后兼容而保留,不再影响功能。该参数仍可在请求中提供,但其值无效。此前,它用于表示词汇表中所有词元分数的理论上限。 |
示例
要使用分析器分词的文本运行搜索,请在请求中指定一个analyzer
。该分析器必须与您在摄入时用于文本分析的模型兼容。
GET my-nlp-index/_search
{
"query": {
"neural_sparse": {
"passage_embedding": {
"query_text": "Hi world",
"analyzer": "bert-uncased"
}
}
}
}
有关更多信息,请参阅DL 模型分析器。
如果您未指定分析器,则使用默认的bert-uncased
分析器。
GET my-nlp-index/_search
{
"query": {
"neural_sparse": {
"passage_embedding": {
"query_text": "Hi world"
}
}
}
}
要使用分词器模型分词的文本进行搜索,请在请求中提供模型 ID。
GET my-nlp-index/_search
{
"query": {
"neural_sparse": {
"passage_embedding": {
"query_text": "Hi world",
"model_id": "aP2Q8ooBpBj3wT4HVS8a"
}
}
}
}
要使用稀疏向量进行搜索,请在query_tokens
参数中提供稀疏向量。
GET my-nlp-index/_search
{
"query": {
"neural_sparse": {
"passage_embedding": {
"query_tokens": {
"hi" : 4.338913,
"planets" : 2.7755864,
"planet" : 5.0969057,
"mars" : 1.7405145,
"earth" : 2.6087382,
"hello" : 3.3210192
}
}
}
}
}
后续步骤
- 有关神经稀疏搜索的更多信息,请参阅神经稀疏搜索。