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