赞
踩
注:案例测试数据及其索引构建详见:ElasticSearch中使用bge-large-zh-v1.5进行向量检索(一)-CSDN博客 中的第三部分。
假设任务场景为:用“新疆”向量检索相关的数据,同时需要匹配关键词“巴州”。
首先获取“新疆”的bge-large-zh-v1.5向量:
- POST _ml/trained_models/bge-large-zh-v1.5/_infer
- {
- "docs": [
- {
- "text_field": "新疆"
- }
- ]
- }
结果如下:
直接根据“新疆”向量查询
- GET article_embeddings/_search
- {
- "query": {
- "knn": {
- "field": "text_embedding.predicted_value",
- "num_candidates": 10,
- "query_vector": [
- -0.03627504035830498,
- -0.007771393284201622,
- 0.036312565207481384,
- 此处省略若干值
- ]
- }
- }
- }
默认返回所有的数据,且编号002的文档排在003前面。
如果我们想让包含关键词“巴州”的003文档排在002的前面,可以采用加filter的方式:
编写相应语句:
- GET article_embeddings/_search
- {
- "knn": {
- "field": "text_embedding.predicted_value",
- "num_candidates": 10,
- "filter": {
- "match": {
- "title": "巴州"
- }
- },
- "query_vector": [
- -0.03627504035830498,
- -0.007771393284201622,
- 0.036312565207481384,
- 此处省略若干值
- ]
- }
- }
结果如下:
此时发现最终只剩一条满足title中有“巴州”的文档了。
如果只是想把含有“巴州”的文档提前,不过滤,则可以采用如下的方式:
- GET article_embeddings/_search
- {
- "query": {
- "match": {
- "title": "巴州"
- }
- },
- "knn": {
- "field": "text_embedding.predicted_value",
- "num_candidates": 10,
- "query_vector": [
- -0.03627504035830498,
- -0.007771393284201622,
- 0.036312565207481384,
- 此处省略若干值
- ]
- }
- }
效果如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。