上回 我们通过 Ingest Pipeline 把数据在写入 Easysearch 的过程中自动转换成了向量,这次我们通过 Search Pipeline 实现查询时将查询内容转换成向量并进行查询。
Embedding 服务
这里要保持与写入时使用的模型一致。
实战
我们实战演示分为以下几个步骤:
- 建立 Search Pipeline
- 设置索引默认 Pipeline
- 数据查询
建立 Search Pipeline
PUT /_search/pipeline/default_model_pipeline
{
"rewrite_processors": [
{
"semantic_query_enricher" : {
"description": "Sets the default embedding model",
"url": "https://dashscope.aliyuncs.com/compatible-mode/v1/embeddings",
"vendor": "openai",
"api_key": "<api_key>",
"default_model_id": "text-embedding-v4",
"vector_field_model_id": {
"text_vector": "text-embedding-v4"
}
}
}
]
}
设置索引默认 Pipeline
为了方便查询,不用每次查询都指定 Pipeline,我们设置默认值。
PUT /my-index/_settings
{
"index.search.default_pipeline" : "default_model_pipeline"
}
数据查询
使用上次写入的数据进行查询测试,但不直接查询原来的文本内容。
GET /my-index/_search
{
"_source": "input_text",
"query": {
"semantic": {
"text_vector": {
"query_text": "非常先进高级的生产车间",
"candidates": 100,
"query_strategy": "LSH_COSINE"
}
}
}
}
参数解释请查看文档。
OK,从上面可以看到,我们没有直接搜索原文本中的内容或关键字,但还是通过文本的语义检索到了相关内容。
相关文章: