📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入
Easysearch 集成阿里云与 Ollama Embedding API,构建端到端的语义搜索系统

背景 #

在当前 AI 与搜索深度融合的时代,语义搜索已成为企业级应用的核心能力之一。作为 Elasticsearch 的国产化替代方案,Easysearch 不仅具备高性能、高可用、弹性伸缩等企业级特性,更通过灵活的插件化架构,支持多种主流 Embedding 模型服务,包括 阿里云通义千问(DashScope)本地化 Ollama 服务,实现对 OpenAI 接口规范的完美兼容。

本文将详细介绍如何在 Easysearch 中集成阿里云和 Ollama 的 Embedding API,构建端到端的语义搜索系统,并提供完整的配置示例与流程图解析。


一、为什么选择 Easysearch? #

Easysearch 是由极限科技(INFINI Labs)自主研发的分布式近实时搜索型数据库,具备以下核心优势:

  • ✅ 完全兼容 Elasticsearch 7.x API 及 8.x 常用操作
  • ✅ 原生支持向量检索(kNN)、语义搜索、混合检索
  • ✅ 内置数据摄入管道与搜索管道,支持AI模型集成
  • ✅ 支持国产化部署、数据安全可控
  • ✅ 高性能、低延迟、可扩展性强

尤其在 AI 增强搜索场景中,Easysearch 提供了强大的 text_embeddingsemantic_query_enricher 处理器,允许无缝接入外部 Embedding 模型服务。


二、支持的 Embedding 服务 #

Easysearch 通过标准 OpenAI 兼容接口无缝集成各类第三方 Embedding 模型服务,理论上支持所有符合 OpenAI Embedding API 规范的模型。以下是已验证的典型服务示例:

服务类型模型示例接口协议部署方式特点
云端 SaaS阿里云 DashScopeOpenAI 兼容云端开箱即用,高可用性
OpenAI text-embedding-3OpenAI 原生云端
其他兼容 OpenAI 的云服务OpenAI 兼容云端
本地部署Ollama (nomic-embed-text等)自定义 API本地/私有化数据隐私可控
自建开源模型(如 BGE、M3E)OpenAI 兼容本地/私有化灵活定制

核心优势: #

  1. 广泛兼容性
    支持任意实现 OpenAI Embedding API 格式(/v1/embeddings)的服务,包括:

    • 请求格式:{ "input": "text", "model": "model_name" }
    • 响应格式:{ "data": [{ "embedding": [...] }] }
  2. 即插即用
    仅需配置服务端点的 base_urlapi_key 即可快速接入新模型。

  3. 混合部署
    可同时配置多个云端或本地模型,根据业务需求灵活切换。


三、结合 AI 服务流程图 #

说明

  • 索引阶段:通过 Ingest Pipeline 调用 Embedding API,将文本转为向量并存储。
  • 搜索阶段:通过 Search Pipeline 动态生成查询向量,执行语义相似度匹配。
  • 所有 API 调用均兼容 OpenAI 接口格式,降低集成成本。

四、集成阿里云 DashScope(通义千问) #

阿里云 DashScope 提供高性能文本嵌入模型 text-embedding-v4,支持 256 维向量输出,适用于中文语义理解任务。

1. 创建 Ingest Pipeline(索引时生成向量) #

PUT _ingest/pipeline/text-embedding-aliyun
{
  "description": "阿里云用于生成文本嵌入向量的管道",
  "processors": [
    {
      "text_embedding": {
        "url": "https://dashscope.aliyuncs.com/compatible-mode/v1/embeddings",
        "vendor": "openai",
        "api_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "text_field": "input_text",
        "vector_field": "text_vector",
        "model_id": "text-embedding-v4",
        "dims": 256,
        "batch_size": 5
      }
    }
  ]
}

2. 创建索引并定义向量字段 #

PUT /my-index
{
  "mappings": {
    "properties": {
      "input_text": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "text_vector": {
        "type": "knn_dense_float_vector",
        "knn": {
          "dims": 256,
          "model": "lsh",
          "similarity": "cosine",
          "L": 99,
          "k": 1
        }
      }
    }
  }
}

3. 使用 Pipeline 批量写入数据 #

POST /_bulk?pipeline=text-embedding-aliyun&refresh=wait_for
{ "index": { "_index": "my-index", "_id": "1" } }
{ "input_text": "风急天高猿啸哀,渚清沙白鸟飞回..." }
{ "index": { "_index": "my-index", "_id": "2" } }
{ "input_text": "月落乌啼霜满天,江枫渔火对愁眠..." }
...

4. 配置 Search Pipeline(搜索时动态生成向量) #

PUT /_search/pipeline/search_model_aliyun
{
  "request_processors": [
    {
      "semantic_query_enricher": {
        "tag": "tag1",
        "description": "阿里云 search embedding model",
        "url": "https://dashscope.aliyuncs.com/compatible-mode/v1/embeddings",
        "vendor": "openai",
        "api_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "default_model_id": "text-embedding-v4",
        "vector_field_model_id": {
          "text_vector": "text-embedding-v4"
        }
      }
    }
  ]
}

5. 设置索引默认搜索管道 #

PUT /my-index/_settings
{
  "index.search.default_pipeline": "search_model_aliyun"
}

6. 执行语义搜索 #

GET /my-index/_search
{
  "_source": "input_text",
  "query": {
    "semantic": {
      "text_vector": {
        "query_text": "风急天高猿啸哀,渚清沙白鸟飞回...",
        "candidates": 10,
        "query_strategy": "LSH_COSINE"
      }
    }
  }
}

搜索结果示例: #

"hits": [
  {
    "_id": "1",
    "_score": 2.0,
    "_source": { "input_text": "风急天高猿啸哀..." }
  },
  {
    "_id": "4",
    "_score": 1.75,
    "_source": { "input_text": "白日依山尽..." }
  },
  ...
]

结果显示:相同诗句匹配得分最高,其他古诗按语义相似度排序,效果理想。


五、集成本地 Ollama 服务 #

Ollama 支持在本地运行开源 Embedding 模型(如 nomic-embed-text),适合对数据隐私要求高的场景。

1. 启动 Ollama 服务 #

ollama serve
ollama pull nomic-embed-text:latest

2. 创建 Ingest Pipeline(使用 Ollama) #

PUT _ingest/pipeline/ollama-embedding-pipeline
{
  "description": "Ollama embedding 示例",
  "processors": [
    {
      "text_embedding": {
        "url": "http://localhost:11434/api/embed",
        "vendor": "ollama",
        "text_field": "input_text",
        "vector_field": "text_vector",
        "model_id": "nomic-embed-text:latest"
      }
    }
  ]
}

3. 创建 Search Pipeline(搜索时使用 Ollama) #

PUT /_search/pipeline/ollama_model_pipeline
{
  "request_processors": [
    {
      "semantic_query_enricher": {
        "tag": "tag1",
        "description": "Sets the ollama model",
        "url": "http://localhost:11434/api/embed",
        "vendor": "ollama",
        "default_model_id": "nomic-embed-text:latest",
        "vector_field_model_id": {
          "text_vector": "nomic-embed-text:latest"
        }
      }
    }
  ]
}

后续步骤与阿里云一致:创建索引 → 写入数据 → 搜索查询。


六、安全性说明 #

Easysearch 在处理 API Key 时采取以下安全措施:

  • 🔐 所有 api_key 在返回时自动加密脱敏(如 TfUmLjPg...infinilabs
  • 🔒 支持密钥管理插件(如 Hashicorp Vault 集成)
  • 🛡️ 支持 HTTPS、RBAC、审计日志等企业级安全功能

确保敏感信息不被泄露,满足合规要求。


七、总结 #

通过 Easysearch 的 Ingest PipelineSearch Pipeline,我们可以轻松集成:

  • ✅ 阿里云 DashScope(云端高性能)
  • ✅ Ollama(本地私有化部署)
  • ✅ 其他支持 OpenAI 接口的 Embedding 服务

无论是追求性能还是数据安全,Easysearch 都能提供灵活、高效的语义搜索解决方案。


八、下一步建议 #

  • 尝试混合检索:结合关键词匹配与语义搜索
  • 使用 Rerank 模型提升排序精度
  • 部署多节点集群提升吞吐量
  • 接入 INFINI Gateway 实现统一 API 网关管理

参考链接 #


📌 关注我们,获取更多 AI + 搜索技术实践!


Easysearch —— 让搜索更智能,让 AI 更易用。

标签
2026 x
开源 x
赞助 x
开源生态 x
社区 x
低空经济 x
商业化 x
Easysearch x
数据分析 x
金猿奖 x
国产化 x
搜索引擎 x
Coco AI x
技术卓越奖 x
创新产品奖 x
IT168 x
APM x
Skywalking x
产品更新 x
Easy-Es x
Coco x
AI x
GitLab x
代码审核 x
人工智能 x
石油石化 x
performance x
Gitee x
投票 x
Meilisearch x
Rust x
轻量级 x
搜索百科 x
Docker x
Docker Compose x
Easyserach x
Console x
DevOps x
Elasticsearch x
国产替代 x
backup x
snapshot x
CCR x
Gateway x
esdump x
source_reuse x
ignore_above x
OpenSearch x
AWS x
Lucene x
Solr x
Easyearch x
发明专利 x
数据分区 x
国际专利 x
一等奖 x
人工智能应用创新大赛 x
bulk x
embedding x
OpenAI x
IK x
TDBC x
2025 x
信通院 x
可信数据库大会 x
搜索型数据库 x
中国数据库产业图谱 x
上海开源创新菁英荟 x
开源创新新星企业 x
Workshop x
AI 搜索 x
智能助手 x
Automation x
Logstash x
MongoDB x
开源中国 x
直播 x
merge x
Elasticsearch 9 x
GitCode x
AI搜索 x
Cloud x
rollup x
Kubernetes x
Operator x
Arm64 x
Snapshot x
S3 x
Grafana x
Opensearch x
Nginx x
直播活动 x
搜索客社区 x
Meetup x
ES x
企业搜索 x
DeepSeek x
RAG x
certificate x
windows x
Rollup x
TopN x
Filebeat x
Ubuntu x
请求限速 x
INFINI Console x
指标 x
Kibana x
多集群 x
client x
Spring Boot x
ECE x
ES Bulk x
vector database x
Postgres x
可搜索快照 x
SDK x
官网 x
Web 开发 x
Next.js x
React x
Three.js x
Metrics x
Helm x
filter x
querycache x
practice x
Agent x
localStorage x
响应式 x
时间组件 x
时区组件 x
极限科技 x
三周年 x
周年庆 x
国家高新技术企业 x
校园招聘 x
湖北工业大学 x
Tauri x
Web 开发人员 x
桌面应用开发 x
桌面端 x
Electron x
Pizza x
认证培训 x
报名 x
Scrapy x
爬虫 x
Rust开发者大会 x
docsearch x
文档搜索 x
Easyseach x
有奖征文 x
黑神话悟空 x
EKS x
征文系列 x
跨集群搜索 x
科技中小企业 x
白皮书 x
Python SDK x
数据库产业图谱 x
超大规模 x
分布式集群 x
写入限流 x
2024可信数据库发展大会 x
创新型中小企业 x
搜索数据库 x
正排索引 x
免费许可证 x
K8S x
DTC2024 x
实时搜索 x
ES国产化 x
Redis x
OOM x
测试 x
内存 x
趋势 x
AI绘画 x
Stable Diffusion x
Diffusion x
Model x
GAN x
语义搜索 x
知识图 x
向量数据库 x
中国信通院 x
星河(Galaxy) x
标杆案例 x
鲲鹏 x
鲲鹏技术认证 x
客户端 x
日志平台 x
LDAP x
Loadgen x
中国一汽 x
国内数据库 x
墨天轮 x
监控系统 x
集成测试 x
ZSTD x
Helm Charts x
国产适配 x
兆芯 x
Linux x
LoongArch x
信创适配 x
二维拆分算法 x
中国移动云 x
Vault x
加密 x
安全工具 x
kNN x
向量检索 x
图片搜索 x
Alerting x
SQL x
搜索 x
Embedding x
可信数据库 x
统信 x
海光 x
龙芯 x
restore x
Arm x
大数据企业证书 x
移动云大会 x
信通院产品评测 x
国内首家 x
数据可视化 x
北京软协 x
第十届理事会会员单位 x
Apache Arrow x
宣传片 x
大会分享 x
多集群管理 x
无缝数据迁移 x
Loadrun x
INFINI Gateway x
log4j x