Orama:一个把全文搜索做成艺术品的开源搜索引擎

文章目录

Orama:一个把全文搜索做成艺术品的开源搜索引擎

oramasearch/orama 在 GitHub 上已经累积到 10.4K Star。

这是个让我有点意外的项目。搜索引擎这东西,行业内其实早有定论,Elasticsearch 那套基础设施早就把市场占满了,能再做出个有竞争力的开源搜索引擎,本身就不太容易。但 Orama 偏要做,而且做到了。

它解决的核心问题就一个:在浏览器或者 Node 里跑搜索,又要全文检索,又要向量检索,还要混合检索。这事在以前是要拼凑好几个库才能干的,Orama 把它们压成了一个。

为什么这工具值得看

我个人觉得 Orama 真正有意思的点,在于它把搜索的复杂度往下压了一层。

你以前要给应用加搜索,要么上 Algolia 这种 SaaS,按调用次数掏钱,要么自己搭一个 Elasticsearch 集群,服务器成本不低,维护成本更高。Orama 是个 npm 包,安装完就能跑,数据完全在自己手里。这一层下来,搜索这件事的成本就直接被压没了。

它的功能覆盖也算完整。全文搜索、向量搜索、混合搜索都支持,还自带 BM25 排序、Typo Tolerance 容错、30 种语言的词干分词、地理搜索、Facets 聚合、字段加权、结果置顶。这些功能放在商业搜索服务里通常都是要单独付费的。

安装和使用

安装就一行:

bash 复制代码
npm i @orama/orama

用法本身就两步:先定义 schema,再插入和搜索。

javascript 复制代码
import { create, insert, search } from '@orama/orama'

const db = create({
  schema: {
    name: 'string',
    description: 'string',
    price: 'number',
    meta: { rating: 'number' }
  }
})

insert(db, {
  name: 'Noise cancelling headphones',
  description: 'Best noise cancelling headphones on the market',
  price: 99.99,
  meta: { rating: 4.5 }
})

const results = search(db, { term: 'Best headphones' })

搜索结果会直接返回 BM25 排序的命中项,带分数和原文档。从我看的示例输出,单次查询在 21 微秒级,这个量级放在边缘场景里是完全够用的。

向量搜索这块怎么说

Orama 从 v3 开始把向量搜索和混合搜索做成了内置功能,不用外挂任何向量数据库。Schema 里把字段标成 vector[1536],插入时带上 embedding 向量,搜索时设 mode: 'vector' 就行。

如果你嫌自己算 embedding 麻烦,它有官方的 @orama/plugin-embeddings 插件,底层用 TensorFlow.js,可以在插入数据时自动生成向量。要用 OpenAI 的模型,就配 @orama/plugin-secure-proxy,从客户端调 OpenAI 的 API 还能保持 key 不外泄。这层处理挺讨巧的,给想做 RAG 的人把脚手架都搭好了。

更有意思的是它的 Answer Engine

v3 之后 Orama 还做了 Answer Session,等于在自己造的搜索引擎之上,封装了一个类似 ChatGPT 或 Perplexity 的对话能力。配置完 Secure Proxy 插件,传入 OpenAI 的 chat 模型,就能让 Orama 基于索引出来的数据回答问题,附带原始文档引用。这玩意儿等于一个轻量级的本地 RAG 框架,特别适合想自己搭问答系统的团队参考。

谁适合用

我梳理了几类场景:

  • 做中小型站点搜索、不想上 Elasticsearch 也不想付 Algolia 费用的开发者
  • 在做 RAG 应用、需要一个轻量本地检索层的团队
  • 搭文档站、想加全文搜索的 Vitepress、Docusaurus、Astro、Nextra 用户,官方都有对应插件
  • 想在浏览器端直接跑搜索、不把数据传到后端的场景

许可证是 Apache 2.0,商业可用。插件生态也比较齐,embeddings、secure proxy、analytics、data persistence、qps、pt15 这些都有官方维护版本,框架集成插件覆盖了主流的几个文档站工具。

整体看下来,Orama 是那种「把事情做对了」的开源项目。代码量不大,功能取舍很克制,没想着自己包打天下,把向量计算、LLM 调用这些重活都交给了插件。要做 AI 时代本地化的搜索层,它至少是一个干净的起点。

。代码量不大,功能取舍很克制,没想着自己包打天下,把向量计算、LLM 调用这些重活都交给了插件。要做 AI 时代本地化的搜索层,它至少是一个干净的起点。

相关推荐
matrixcode11 小时前
Artillery:给服务端做压测的老牌工具
其他
日日大王学编程1 小时前
阿里巴巴开源 Data Agent(Text2SQL)项目全维度详解
java·ai·开源
孙琦Ray1 小时前
Deepgram 收购 Daily:Pipecat 保持 BSD V2 开源并设独立基金会
开源·daily·收购·语音ai·deepgram·pipecat·实时上下文标准
tedcloud1232 小时前
Docker Compose 部署 Uptime Kuma:配置 HTTPS、QQ 邮箱告警与数据备份
服务器·网络协议·ui·docker·容器·https·开源
syntaxsage2 小时前
searx:隐私优先的元搜索引擎,宣布停止维护
其他·搜索引擎
小王R语言学习2 小时前
PaddleNLP:基于飞桨的大模型开发套件
人工智能·其他·paddlepaddle
kk_net88992 小时前
FSNotes:macOS 和 iOS 上的开源笔记管理器
笔记·其他·macos·ios
syntaxsage3 小时前
Dive:Docker 镜像层可视化分析工具
运维·其他·docker·容器
miofly3 小时前
GitHub 周榜趋势速报 | 2026-11-01
开源·github