字节笔记本

2026年2月22日

Orama - 开源全文与向量搜索引擎

Orama 是一个开源、高性能的全文和向量搜索引擎,完全用 TypeScript 编写,零依赖。它可以在浏览器、服务器或边缘网络中运行,支持全文搜索、向量搜索和混合搜索,体积小于 2kb。

核心特性

  • 全文搜索:高性能的全文本搜索能力
  • 向量搜索:支持向量相似度搜索
  • 混合搜索:结合全文和向量搜索的优势
  • 超轻量级:核心功能小于 2kb
  • 零依赖:纯 TypeScript 实现,无外部依赖
  • 多运行时支持:可在浏览器、Node.js、Deno、Bun 等环境运行
  • 边缘网络就绪:专为边缘计算优化

环境要求

JavaScript 运行时是唯一的依赖要求。Orama 设计用于在任何 JS 运行时上工作,并且没有依赖项。

安装

你可以使用任何 JavaScript 包管理器安装 Orama:

bash
npm install @orama/orama

或者在浏览器模块中直接导入:

html
<html>
  <body>
    <script type="module">
      import { create, search, insert } from "https://unpkg.com/@orama/orama@latest/dist/index.js";
      // ...
    </script>
  </body>
</html>

基本用法

javascript
import { create, search, insert } from "@orama/orama";

// 创建新的 Orama 实例
const db = create({
  schema: {
    name: "string",
    description: "string",
    price: "number",
    meta: {
      rating: "number",
    },
  },
});

// 向数据库插入文档
insert(db, {
  name: "Wireless Headphones",
  description: "Experience immersive sound quality with these noise-cancelling wireless headphones.",
  price: 99.99,
  meta: {
    rating: 4.5,
  },
});

// 搜索文档
const searchResult = search(db, {
  term: "headphones",
});

console.log(searchResult.hits.map((hit) => hit.document));

CommonJS 导入

Orama 默认提供 ESM 模块。这使我们能够更快地提供新功能和错误修复,同时在 package.json 中使用 "exports" 字段提供更好的开发者体验。

CommonJS 导入仍然受支持,但我们建议你迁移到 ESM。

TypeScript 支持

在 tsconfig.json 的 compilerOptions 中将 moduleResolution 设置为 Node16 或 NodeNext。

导入类型时,始终使用标准 orama 导入:

typescript
import type { Language } from "@orama/orama";

更多资源

分享: