字
字节笔记本
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";更多资源
分享: