疲劳是最舒适的枕头,努力工作吧。

INFINI Easysearch 向量搜索实战(二)

向量搜索 | 作者 INFINI Labs 小助手 | 发布于1 小时前 | | 阅读数:21

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


关于 Easysearch

INFINI Easysearch 是一款分布式搜索引擎,支持结构化和非结构化的数据检索、全文检索、向量检索、空间地理位置信息检索、组合查询、多语种支持、语义分析和聚合分析等多种功能。

Easysearch 基于 Lucene 构建,紧跟 Lucene 最新版本持续迭代更新,采用商用友好协议,企业可自由部署、二次开发和商业化,无协议合规风险。

Easysearch 致力于为企业提供轻量、安全、自主可控的搜索平台,不断完善产品能力,满足更多企业级需求。

官网:https://easysearch.cn


相关文章:


[尊重社区原创,转载请保留或注明出处]
本文地址:http://elasticsearch.cn/article/15898


0 个评论

要回复文章请先登录注册