查询概述
IBM Watson® Discovery 通过搜索查询提供强大的内容搜索功能。
要在数据采集,建立索引和扩充后从 Discovery 检索数据,请提交查询。
将数据添加到 Discovery时,每个文件的表示将作为 JSON 格式的文档存储在索引中。 应用于集合的扩充项将识别数据中有意义的信息,并将其存储在这些文档中的新字段中。 要搜索数据,请提交查询以返回最相关的文档并抽取您要查找的信息。
查询类型
Discovery 接受下列其中一种受支持的查询类型:
- 查询
-
在文档中的特定字段中查找具有相关值的文档。 此类型的查询使用 Discovery Query Language 语法来定义搜索条件。
Parameter name:
query
- 自然语言查询 (NLQ)
-
查找以自然语言编写的查询的答案。 NLQ 请求接受文本字符串值。
Parameter name:
natural_language_query
除了使用其中一种受支持的查询类型指定的查询外,还可以包含以下一个或两个参数。 还可使用 Discovery 查询语言 (DQL) 语法来指定这些参数的值:
filter
aggregation
有关 Discovery 查询语言的更多信息,请参阅 DQL 概述。
从产品用户界面提交的查询是自然语言查询。 根据正在使用的项目类型,指定了几个其他受支持的参数并给出了缺省值。 有关更多信息,请参阅 缺省查询设置。
Discovery 不记录查询请求数据。 您无法选择性加入请求日志记录。
选择正确的查询类型
下表汇总了每种查询类型支持的功能。 使用它可帮助您确定要提交的查询类型。
目标 | 自然语言查询 (NLQ) | Discovery 查询语言 (DQL) |
---|---|---|
从文档返回段落 | ||
突出显示响应中的术语 (除非启用每个文档的段落) | ||
定义定制停用词或查询扩展 | ||
搜索特定文档字段或扩充项 | ||
使用运算符,例如搜索中的布尔子句 | ||
启用拼写更正 | ||
添加整理以返回对某些问题的硬编码答案 | ||
使用相关性训练 | ||
启用答案查找以从段落返回简明答案 | ||
使用表检索 |
查询分析
提交查询时,将分析查询文本字符串。 在查询分析期间,将标识查询中每个关键术语的根 (或引理)。 将除去原始查询字符串中出现的任何停用词,并添加为原始查询字符串中出现的任何词汇定义的同义词扩展。 此增强版本的查询是提交到 Discovery的内容。
将对所有查询执行相同的分析,无论这些查询是作为自然语言查询提交还是使用发现查询语言语法。
查询流
下图显示了 Discovery如何处理搜索请求的概念性说明。

流程图中显示了以下流程:
- BM25
- 使用最佳匹配 25 (概率信息检索算法) 来计算搜索返回的每个文档的相关性分数。 该图显示 BM25 适用于来自查询请求的文档结果,但不限于查询请求。 它还与其他方法一起用作应用于自然语言查询结果的相关性训练排名器过程的一部分。
- 整理
- 如果自然语言查询与预定义的 curation 查询匹配,那么将返回某些文档和可能的硬编码片段。 没有用于启用 curation 的查询参数。 要使用 curations,必须以编程方式定义这些 curations (创建 curation 方法)。 任何组织的输出都将与相关性训练排名器或 QPP 结果的输出合并。
- 相关性训练
- 可以选择定义并应用于项目以对文档进行相关评分的模型。 没有用于启用相关性训练的查询参数。 要使用相关性训练,必须以编程方式 (创建训练查询方法) 或使用产品用户界面成功训练项目。
- QPP
- 一种查询性能预测算法,在给定查询和排名靠前的结果列表的情况下,生成用于确定文档相关性的分数。 仅当没有相关性训练排名器可用时才使用。
- 过滤器
- 可以将
filter
参数与query
和natural_language_query
请求一起传递,以从结果集中除去不满足特定条件的文档。 过滤器显示为文档检索阶段中的最后一个步骤。 但是,它在流中的不同时间使用。 选择其在图中的位置是为了强调任何与过滤器定义不匹配的文档都将从结果集中排除。 排除甚至适用于可能在管理中指定的文档。 - 段落检索
- 当
passages.enabled=true
参数包含在自然语言查询请求中时,返回文档中的段落。 - 答案结果
- 当
passages.find_answers=true
参数包含在自然语言查询请求中时,将返回段落中的简明答案以及从文档中抽取的段落。 如果启用了答案结果,那么每个搜索结果的最终置信度分数都是来自答案结果,段落检索以及 QPP 或重新排名搜索的置信度分数的组合 (以使用的方法为准)。 - 表检索
- 当
table_results.enabled=true
参数包含在自然语言查询请求中时,返回文档中的表中的信息。
查询限制
查询是向 API 的 /query
端点提交 POST
请求的任何操作。 此类操作包括使用 API 提交的查询。 它不包含从产品用户界面的 改进和定制 页面上的搜索栏提交的查询。
仅当请求成功时,才会对查询进行计数,这意味着它将返回响应 (消息代码为 200)。
每个服务实例每月可提交的搜索查询数取决于 Discovery 套餐类型。
计划 | 每个服务实例每月的查询数 |
---|---|
Cloud Pak for Data | 无限制 |
Premium | 无限制 |
企业 | 无限制 |
加号 (包括试用) | 500,000 起 |
仅对于企业套餐,您的帐单标签会将从查询生成的请求作为“查询”进行搜索并分析 API 调用。 有关 Analyze API 调用的更多信息,请参阅 Analyze API 限制。
每个服务实例每秒可处理的查询数取决于 Discovery 套餐类型。
计划 | 每个服务实例的并发查询数 |
---|---|
Cloud Pak for Data | 无限制 |
Premium | 50 |
企业 | 5 |
加号 (包括试用) | 5 |
有关定价的信息,请参阅 Discovery 定价套餐。
估算查询使用情况
如何估算应用程序每月将使用的查询数取决于您的用例。
- 对于更注重数据扩充和分析的用例,或者未大量搜索文档处理的输出的用例,您可以根据文档总数来估算查询号。
- 对于许多用户与使用 Discovery的应用程序进行交互的用例,您可以通过计算每个用户的搜索次数乘以期望的用户数来估算。 例如,用户向虚拟助手提交的问题中有 50% 可能由 Discovery回答。 每月有 100,000 个用户,每个用户平均有 3 个问题,您可以期望每月有 15,000 个查询。(10,000 个用户/月 * 3 个查询/用户 * 50% 到 Discovery = 15,000)
在启用文档级安全性的情况下进行查询
IBM Cloud Pak for Data IBM Software Hub
此信息仅适用于已安装的部署。
如果对集合启用文档级别安全性,那么只有当前用户有权访问的文档才会在搜索结果中返回。 有关更多信息,请参阅 配置文档级安全性。
要返回符合安全限制的搜索结果,当前用户必须满足以下要求:
- 有权访问 Discovery 实例。
- 有权访问数据源。
如果当前用户不满足这些需求,那么不会返回任何搜索结果。
与您的 Discovery 实例关联的用户名用于生成授权令牌。 该令牌用于认证 Discovery 查询。
要生成每个访问令牌,请运行以下命令:
curl -u "{username}:{password}" \
"https://{hostname}:{port}/v1/preauth/validateAuth"
将 {username}
和 {password}
替换为用户的 Discovery 凭证。
运行查询时,请使用与用户关联的不记名令牌。
curl -H "Authorization: Bearer {token}" \
'https://{hostname}/{instance_name}/v2/projects/{project_id}/collections/{Collection_ID}/query\?version\=2019-11-29'