INFINI Easysearch 向量搜索实战(二)

0 阅读1分钟

上回 我们通过 Ingest Pipeline 把数据在写入 Easysearch 的过程中自动转换成了向量,这次我们通过 Search Pipeline 实现查询时将查询内容转换成向量并进行查询。

Embedding 服务

这里要保持与写入时使用的模型一致。

实战

我们实战演示分为以下几个步骤:

  1. 建立 Search Pipeline
  2. 设置索引默认 Pipeline
  3. 数据查询

建立 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,从上面可以看到,我们没有直接搜索原文本中的内容或关键字,但还是通过文本的语义检索到了相关内容。


相关文章: