本地 RAG 实战:用 Easysearch + Ollama SDK 半小时搭建检索增强问答系统

✅ 目标:只用两台服务器(或同一台)就跑通 “向量检索 + 本地大模型” 原型
✅ 特点:完全离线、依赖极少、部署脚本即文档
✅ 适合:快速 PoC、内网合规场景、想深挖 RAG 工作机理的开发者

0. 背景与动机

生成式 AI 聊天固然强大,但当问题依赖本地私有知识时,单靠 LLM 参数内的“世界记忆”往往答非所问。RAG(Retrieval-Augmented Generation) 的思路是:

  1. 把文档切片 → 向量化 → 入库
  2. 用户提问 → 同样向量化 → 检索
  3. 将召回片段拼进 prompt,让大模型“带着材料”再回答

多数教程直接用云端 Embedding+OpenAI GPT-4o,但一些团队因隐私、成本或离线环境无法这样做。
本文选用:

  • EasySearch (= OpenSearch + Elastiknn) 做向量存取
  • Ollama SDK 连接本地 LLM
  • Python + requests + ollama 三个依赖即可
阅读更多

Easysearch 数据可视化和管理平台:INFINI Console 使用介绍

随着数据分析需求的不断增长,高效查询和分析大数据集变得越来越重要。Easysearch 作为一种强大的国产化搜索和分析引擎,同时作为 Elasticsearch 国产替代方案,支持原生 DSL 查询语法和 SQL 查询,确保原业务代码无需调整即可无缝迁移。Easysearch 兼容 ES 7.x 现有的 SDK 和索引存储格式,支持冷热架构和索引生命周期管理,为用户提供了全面的数据处理解决方案。本文将详细介绍如何使用 ES 7.x Python SDK 与 Easysearch 进行交互,包括安装、连接、数据操作和查询等方面。

1. 安装 Elasticsearch Python 客户端

要使用 Elasticsearch Python 客户端,首先需要通过pip进行安装。打开终端或命令提示符,并运行以下命令:

1
pip install elasticsearch==7.13.1

如果使用默认版本安装,会安装 8.x 的依赖,可能会报错 elasticsearch.UnsupportedProductError: The client noticed that the server is not Elasticsearch and we do not support this unknown product.

由于 Elasticsearch 7.10.2 以后变更了许可模式,引入了 Server Side Public License (SSPL) 和 Elastic License,很多基于 Elasticsearch 7.10.2 分支出来的搜索引擎需要使用 7.x 版本的 SDK 和 agent,比如 Beats 全家桶。

在这里插入图片描述
这是一个获取集群信息的 demo,使用es.cluster.health() 调用 Elasticsearch 集群的健康检查 API,返回集群的健康状态。

阅读更多

Easysearch、Elasticsearch、Amazon OpenSearch 快照兼容对比

在当今的数据驱动时代,搜索引擎的快照功能在数据保护和灾难恢复中至关重要。本文将对 Easysearch、Elasticsearch 和 Amazon OpenSearch 的快照兼容性进行比较,分析它们在快照创建、恢复、存储格式和跨平台兼容性等方面的特点,帮助大家更好地理解这些搜索引擎的差异,从而选择最适合自己需求的解决方案。

启动集群

Easysearch

服务器一般情况下默认参数都是很低的,而 Easysearch/Elasticsearch 是内存大户,所以就需要进行系统调优。

1
sysctl -w vm.max_map_count=262144

vm.max_map_count 是一个 Linux 内核参数,用于控制单个进程可以拥有的最大内存映射区域(VMA,Virtual Memory Areas)的数量。内存映射区域是指通过内存映射文件或匿名内存映射创建的虚拟内存区域。

阅读更多

推荐给 Easysearch 新用户的几个 Elasticsearch 可视化工具

Easysearch 作为国产化的 Elasticsearch(ES)替代方案,兼容 Elasticsearch 生态系统中的多种工具。本文将介绍几款适合 Easysearch 用户的可视化工具,帮助您更高效地管理和查询数据。

1. Elasticsearch Head 插件

在 ES 培训经常提到的 Elasticsearch Head 是一款基于浏览器的插件,适合不想部署 Kibana 等复杂工具的用户。它提供了简洁的界面,方便用户查看集群状态、索引分布、分片信息等。

主要功能:

  • 索引分布查看
    image-20250220212800529

  • 索引详细信息
    image-20250220214716206

阅读更多

Macbook Pro快速搭建Easysearch学习环境

在学习过程中,我们有时身边没有可用的服务器,这时就需要借助自己的 Mac 来安装和学习 Easysearch。然而,Easysearch 官网并未提供 Mac 版本的安装教程,下面我将详细整理我在 Mac 上安装和使用 Easysearch 的折腾经历。在这里插入图片描述

Easysearch

Easysearch 的运行依赖于 Java,程序启动时会自动从当前目录的 JDK 中查找 Java 环境。因此,即便环境变量中已经配置了 Java,程序也可能无法找到。针对这个问题,有两种解决办法:
下载 JDK 的二进制文件,将其重命名为 “jdk”,并放置在 Easysearch 的根目录下。
下载 Easysearch 的 bundle 包,该包会自带一个 JDK。下载链接为:https://release.infinilabs.com/Easysearch/stable/bundle/
安装步骤如下:首先执行初始化脚本,此脚本会设置 TLS 证书和集群密码。在执行脚本之前,log 目录为空。

阅读更多

使用 INFINI Console 配置集群监控 Webhook 通知指南

在集群管理中,监控关键指标如 CPU、内存、磁盘、JVM 等是至关重要的。对于 Easysearch 及 ES 生态系统,还需要关注集群本身的指标,例如搜索延迟、集群状态、节点移除等。INFINI Console 不仅提供了默认的监控指标,还支持用户自定义监控项。当监控数值达到预设阈值时,系统可以通过 Webhook 发送通知至 Slack、飞书等平台。

监控配置流程

1. 告警对象与通知渠道设置

在 INFINI Console 中,首先需要配置监控对象和通知渠道:

告警对象与通知渠道设置

2. 告警中心管理

阅读更多

实现 INFINI Console 与 GitHub 的单点登录集成:一站式身份验证解决方案

本文将为您详细解析如何通过 GitHub OAuth 2.0 协议,为 INFINI Console 实现高效、安全的单点登录(Single Sign-On, SSO)集成。通过此方案,用户可直接使用 GitHub 账户无缝登录 INFINI Console,简化身份验证流程,提升系统安全性与用户体验。


一、GitHub OAuth 应用配置

1. 创建 OAuth 应用程序

  • 登录 GitHub,导航至 Settings -> Developer settings -> OAuth Apps

  • 点击 New OAuth App,创建新的 OAuth 应用程序。

    创建 OAuth 应用

阅读更多

轻松管理 ES 集群:我把 Infinilabs Console 上架了懒猫微服,默认支持外网访问、

之前我的 infinilabs Console 一直跑在群晖里,由于和 Coco-AI 的默认端口冲突,导致经常忘记端口信息,群晖里运行着 Easysearch,Elasticsearch、OpenSearch 三个大集群,也想慢慢迁移到其他性能高的机器上去,正好最近购买了懒猫微服,能够让我做应用的迁移,顺便还得能上架一些应用。

Infinilabs.console 是什么?

如果你用过 Elasticsearch,那就一定知道 Kibana。Infinilabs Console,就是极限科技团队开发的国产可视化控制台,是一个面向 Easysearch、Elasticsearch 和 OpenSearch 的运维、监控、数据管理平台,可以看作是国产版的 Kibana 替代品。

最初接触这个款产品的时候让我眼前一亮,它能够借助 Easysearch 或者 Elasticsearch 的 REST API 来连接集群,同时也高效地管理和监控 Elasticsearch、OpenSearch 以及 INFINI Easysearch 等搜索引擎集群,提供统一的运维、监控、安全和数据管理能力。这一点其实是 Kibana 比不了的,尽管是老牌软件,但是初学 ES 的时候 Kibana 连接 ES 要查 log 设置一些 key,这个整个部署过程就花了一个小上午的时间。而且跨版本,跨引擎来支持的能力也是其他可视化工具无法比拟的。简单来说,真的很符合国人的使用习惯。

阅读更多

INFINI Console 使用介绍

上次在《INFINI Easysearch 尝鲜 Hands on》中我们部署了两个节点的 Easysearch,并且也设置了 Console 对集群进行监控。那么今天我们再来介绍下 INFINI Console 的使用。

INFINI Console 仪表盘功能介绍

INFINI Console 是一个功能强大的数据管理和分析平台,其仪表盘页面提供了直观、简洁的界面,使用户可以快速了解系统状态并进行各种管理操作。本文将详细介绍仪表盘页面的各项功能。

警告和通知

仪表盘顶部显示了系统的实时告警、通知和待办事项的数量,当前数据显示:

  • 告警:0 条
  • 通知:0 条
  • 待办:0 条

这些指标有助于及时了解系统的异常情况和待处理的任务。

概览信息

在仪表盘的中心区域,用户可以看到几项关键的系统概览信息:

阅读更多

Easysearch 数据可视化和管理平台:INFINI Console 使用介绍

什么是 Easysearch

Elasticsearch 是一个基于 Apache Lucene 的开源分布式搜索和分析引擎,它被广泛应用于全文搜索、结构化搜索和分析等多种场景中。作为 Elasticsearch 的国产化替代方案,Easysearch 不仅保持了与原生 Elasticsearch 的高度兼容性,还在功能、性能、稳定性和扩展性方面进行了全面提升。对于开发团队来说,从 Elasticsearch 切换到 Easysearch 不需要做任何业务代码的调整,确保了无缝衔接和平滑迁移。

Easysearch 是基于 Elasticsearch 7.10.2 开源版本二次开发,所以支持 Elasticsearch 原始的 Query DSL 语法,基本的 SQL 语法,并且兼容现有 Elasticsearch 的 SDK,使得应用无需修改代码即可进行迁移。其平滑的迁移特性,如基于网关的无缝跨版本迁移与升级,提供了随时安全回退的能力。

在之前的文章中,我们已经介绍了 Easysearch 的搭建可视化工具的使用,今天我们将探讨 Easysearch 集群的基本概念和常用的 API。

Easysearch 集群的核心概念

Easysearch 集群由以下几个核心概念构成:

  1. 节点(Node):集群中的单个服务器,负责存储数据并参与集群的索引和搜索功能。
  2. 集群(Cluster):由一个或多个节点组成,拥有唯一的集群名,协同完成数据索引和查询任务。
  3. 索引(Index):存储相关数据的容器,类似于关系数据库中的数据库,一个索引包含多个文档。
  4. 文档(Document):索引中的基本数据单位,相当于关系数据库中的行。
  5. 字段(Field):文档中的一个属性,相当于数据库中的列。
  6. 分片(Shard):为了提高性能和扩展性,索引可以被分割成多个分片,每个分片是索引的一个部分。
  7. 副本(Replica):分片的副本,用于提高数据的可靠性和在节点出现故障时的可用性。

通过多个 API,例如 _cluster/health_cluster/stats,用户可以轻松查看集群的健康状态和详细信息,这些信息对于维护和优化 Easysearch 集群至关重要。

阅读更多