![][50]
| 应用 - 安装 - 开发 - 文档 - 深度学习 - FAQ - TIPS - EA半小时 - 技术专题 |
端到端搜索
kumo search
是一个端到端搜索引擎框架,支持全文检索、倒排索引、正排索引、排序、缓存、索引分层、干预系统、特征收集、离线计算、存储系统等功能。kumo search
运行在EA
(弹性原子基础设施架构)平台上,支持在多机房、多集群上实现工程自动化
、服务治理
、实时数据
、服务降级与容灾
等功能。
随着互联网的发展,全网搜索已不再是获取信息的唯一途径。许多垂直的信息服务,如电商、社交、新闻等,都有自己的搜索引擎。这些搜索引擎的特点是:数据量适中,业务复杂,对用户体验要求高。开发这些搜索引擎需要大量的工程和算法支持。kumo search
旨在提供一套开箱即用的搜索引擎框架,帮助用户快速搭建自己的搜索引擎。在这个框架上,用户可以通过项目内的AOT编译器,用python
编写业务逻辑,框架会自动生成c++
代码,并生成二进制动态库,动态更新到搜索引擎中。从而实现搜索引擎的快速迭代。
功能展示
![][51]
项目概览
基础库项目
序号 | 项目名 | 说明 | 备注 |
---|---|---|---|
1 | [collie][1] | 引用外部header only library 如jason,toml等,统一管理 | |
2 | [turbo][2] | hash,log,容器类,字符串相关操作 | |
3 | [melon][3] | rpc通信 | |
4 | [alkaid][4] | 文件系统封装、本地文件,hdfs,s3等 | 文件系统统一api,zlib,lz4,zst unified api |
5 | [mizar][5] | 基于rocksdb,toplingdb存储引擎内核 | 待开发wisekey功能,暂时先用rocksdb官方版本 |
6 | alioth玉衡 | 表格内存 | 开发中 |
7 | megrez天权 | 数据集读写 | hdf5 cvs bin已完成,待封装高级c++api |
8 | [phekda][8] | 统一向量引擎访问api UnifiedIndex,简化接口 | 支持snapshot,过滤插件 |
9 | merak天璇 | 综合搜索引擎内核 | 待开发 |
10 | dubhe 天枢 | nlp内核 | 待开发 |
11 | [flare][11] | gpu、cpu高维张量计算,等计算 | |
12 | [theia][12] | 基于opengl图形图像显示,服务端不可用(无显示设备) | |
13 | [dwarf][13] | jupyter协议c++内核 | |
14 | [exodus][14] | hercules and other jupyter应用 | 完成 |
15 | [hercules][15] | python aot编译器 | |
16 | [carbin][16] | c++包管理器,cmake生成器 | 完成 |
17 | [carbin-template][17] | cmake模板库 | 完成 |
18 | [carbin-recipes][18] | carbin recipes 依赖库自定义配置 | 完成 |
18 | hadar | suggest 搜索建议服务 内核 | 接近完成,商用不开源 |
19 | [neptune][19] | ea 前端服务 | 开发中 |
kumo search 服务项目
序号 | 项目名 | 说明 | 进度 |
---|---|---|---|
1 | [sirius][31] | EA元数据服务器 服务发现,全局时钟服务,全局配置服务, 全局id服务 | 完成 |
2 | polaris | 向量引擎单机服务 | 完成 |
3 | elnath | 综合搜索引单机服务 | 开发中 |
4 | vega | 向量引擎数据库集群版 | 完成 商用不开源 |
5 | arcturus | 综合搜索引擎集群版 | 开发中 商用不开源 |
6 | pollux | 综合引擎业务控制台 | 开发中 商用不开源 |
7 | capella | ltr排序服务 | 开发中 商用不开源 |
8 | aldebaran | suggest搜索建议服务集群 | 开发中 商用不开源 |
9 | nunki | nlp服务 | 开发中 商用不开源 |
EA半小时
半小时系列,专注于基于EA
基础设施快速搭建企业级应用服务,侧重实际操作,快速上手,快速开发,快速部署,快速迭代。
- a001-hala-ea - 基础环境安装,使用carbin创建项目
- a002-hala-ea - 创建一个c++应用,在cmake创建库并使用
- a003-hala-ea - 创建一个c++库,使用googletest进行单元测试
- a004-hala-restful - 使用melon库, 创建一个restful服务
- a005-hala-echo - 使用melon库, 创建一个echo服务
- a006-hala-vue - 创建一个cache服务,并提供浏览器访问界面
- a007-hala-vue-ext - cache服务源码解读
- a008-hala-kv - 单机kv服务完整实现
- a009-hala-dkv - 分布式kv服务-1
- a010-hala-dkv - 分布式kv服务-2 服务管理
搜索架构之旅
本专题主要介绍搜索引擎的基础知识,以及随着搜索技术和搜索业务的发展,搜索架构的演进,升级和设计,以及背后的技术原理和实现。
走近AI:向量检索系列
- 一 向量检索为何受到工业界和开发者青睐?
基础环境与CI/CD
EA
是服务端应用的基础架构,EA
目前支持centos
和ubuntu
两种操作系统,mac
系统目前在开发中,尽最大可能支持mac
系统。但目前并没有尝试,为方便编译和ide开发,后续部分功能可能进行尝试兼容。基础环境部署参见安装与使用。
EA
体系的cicd
使用carbin
工具进行管理。carbin
是一个c++
包管理器,cmake
生成器,cicd
工具。carbin
可以下载第三方依赖库,生成cmake
构建系统,进行工程编译和部署。carbin
的使用参见carbin文档。
carbin | conda | cmake | CPM | conan | bazel | |
---|---|---|---|---|---|---|
使用复杂度 | 简单 | 中等 | 困难 | 中等 | 困难 | 困难 |
安装难度 | pip 简单 | 二进制 简单 | NA 简单 | cmake | pip 简单 | 二进制 困难 |
依赖模式 | 源码/二进制 | 二进制 | 源码 | 源码 | 源码/二进制 | 源码 |
依赖树 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
本地源码 | 支持 | 不适用 | 支持 | 支持 | 不适用 | 支持 |
兼容性 | 良好 | 中等 | 良好 | 良好 | 良好 | 差 |
速度 | 快 | 中等 | 慢 | 慢 | 快 | 慢 |
conda是一款不错的管理工具,没有选择conda,是因为conda的编译依赖项比较复杂,而且编译选项经常会出现问题,不太适合c++工程的编译。cmake自带的管理工具,不太适合大型工程的管理,每次重新编译项目可能导致重新下载依赖库,编译时间过长。CPM是一个c++包管理器,同样,在国内的网络环境下,下载依赖库速度较慢,不太适合大型工程的管理。conan是一个c++包管理器,但是conan的依赖库下载速度较慢,不太适合大型工程的管理。 同时,carbin也非常适合管理C++工程。carbin能够快速生成C++项目的CMake管理体系,统一了项目编译过程、选项配置以及编译后安装导出的变量规则。EA体系的项目可以通过固定规则find_package找到项目和项目对象。它也适用于任何基于cmake的项目。
如果基于Docker开发,EA提供了已经预装基础开发环境的容器ea inf:
CentOS 7 + OpenSSL 1.1 + Python 3.10 + GCC 9.3:
lijippy/ea_inf:c7_base_v1
服务与应用
- 天空中最亮的星 —— 集群元数据服务 - 服务发现、全局时钟服务、全局配置服务、全局ID服务
技术专题
- cmake有点甜 - 利用cmake构建系统进行工程编译和部署,实现CICD自动化。
- 走近AI:向量检索 - 向量检索是一种基于向量相似度的检索技术,本文介绍了向量检索的基本原理和应用场景,以及kumo搜索引擎的实现。
作者
- 作者:Jeff.li、vicky、codejie
- 电子邮件:bohuli2048@gmail.com