--- title: "INFINI Easysearch 向量搜索实战(二)" date: 2026-07-19 lastmod: 2026-07-19 description: "本文介绍了如何通过SearchPipeline实现向量搜索功能。首先建立SearchPipeline配置Embedding服务,需保持与写入时相同的模型参数;然后为索引设置默认Pipeline;最后执行语义查询,通过向量相似度而非关键字匹配检索相关内容。文中提供了完整的API调用示例,包括SearchPipeline创建、索引配置和语义查询的具体实现方法,展示了如何用非常先进高级的生产车间这样的语义描述找到相关文本。" tags: ["Easysearch"] summary: "上回我们通过 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,我们设置默认值。" --- [上回](https://infinilabs.cn/blog/2026/easysearch-vector-search-1/)我们通过 Ingest Pipeline 把数据在写入 Easysearch 的过程中自动转换成了向量,这次我们通过 Search Pipeline 实现查询时将查询内容转换成向量并进行查询。 ## Embedding 服务 这里要保持与写入时使用的模型一致。 ## 实战 我们实战演示分为以下几个步骤: 1. 建立 Search Pipeline 2. 设置索引默认 Pipeline 3. 数据查询 ## 建立 Search Pipeline ```plain 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": "", "default_model_id": "text-embedding-v4", "vector_field_model_id": { "text_vector": "text-embedding-v4" } } } ] } ``` {{% load-img "/img/blog/2026/easysearch-vector-search-2/1.png" "" %}} ## 设置索引默认 Pipeline 为了方便查询,不用每次查询都指定 Pipeline,我们设置默认值。 ```plain PUT /my-index/_settings { "index.search.default_pipeline" : "default_model_pipeline" } ``` {{% load-img "/img/blog/2026/easysearch-vector-search-2/2.png" "" %}} ## 数据查询 使用上次写入的数据进行查询测试,但不直接查询原来的文本内容。 ```plain GET /my-index/_search { "_source": "input_text", "query": { "semantic": { "text_vector": { "query_text": "非常先进高级的生产车间", "candidates": 100, "query_strategy": "LSH_COSINE" } } } } ``` 参数解释请查看[文档](https://docs.infinilabs.com/easysearch/main/docs/integrations/ai/search-text-embedding/)。 {{% load-img "/img/blog/2026/easysearch-vector-search-2/3.png" "" %}} OK,从上面可以看到,我们没有直接搜索原文本中的内容或关键字,但还是通过文本的语义检索到了相关内容。 {{% load-img "/img/blog/banner/about_yangf.png" "" %}}