综合介绍
Orama 是一个开源的高性能搜索引擎,完全用 TypeScript 编写,支持全文本搜索、向量搜索和混合搜索。Orama 旨在在任何 JavaScript 运行时环境中工作,提供快速、可靠的搜索功能。它的设计目标是轻量级(小于2KB),但功能强大,适用于各种应用场景,包括浏览器、服务器和边缘网络。Orama 提供了丰富的功能,如全文本搜索、向量搜索、混合搜索、地理搜索、拼写容错和多语言支持等,能够满足从小型项目到大型企业应用的各种搜索需求。
功能列表
- 全文本搜索:支持对文本内容进行快速、准确的全文搜索。
- 向量搜索:支持基于向量的搜索,适用于图像、音频等非文本数据的搜索。
- 混合搜索:结合全文本和向量搜索,提供更全面的搜索结果。
- 高性能:优化的搜索算法,确保在大数据量下仍能快速响应。
- 开源:完全开源,允许用户根据需要进行定制和扩展。
- 无依赖:无需任何外部依赖,简化了安装和使用过程。
- 多平台支持:兼容各种 JavaScript 运行时环境,包括 Node.js 和浏览器。
- 地理搜索:支持基于地理位置的搜索功能。
- 拼写容错:提供拼写错误容忍度,提升搜索体验。
- 多语言支持:支持30种语言的词干提取和标记化。
使用帮助
安装
Orama 可以通过 npm、yarn 或 pnpm 安装。以下是使用 npm 安装的步骤:
- 打开终端或命令行工具。
- 运行以下命令安装 Orama:
npm install @orama/orama
- 安装完成后,您可以在项目中引入 Orama:
import { create, insert, search } from '@orama/orama';
使用
创建索引
- 创建一个新的索引:
const db = create({
schema: {
name: 'string',
description: 'string',
price: 'number',
embedding: 'vector[1536]',
meta: {
rating: 'number',
},
},
});
- 添加文档到索引:
insert(db, {
name: 'Noise cancelling headphones',
description: 'Best noise cancelling headphones on the market',
price: 99.99,
embedding: [0.2432, 0.9431, 0.5322, 0.4234, ...],
meta: { rating: 4.5 },
});
- 执行搜索:
const results = search(db, { term: 'Best headphones' });
console.log(results);
向量搜索
- 创建向量索引:
const vectorIndex = create({
schema: {
name: 'string',
embedding: 'vector[1536]',
},
});
- 添加向量到索引:
insert(vectorIndex, {
name: 'Sample vector',
embedding: [0.1, 0.2, 0.3, ...],
});
- 执行向量搜索:
const vectorResults = search(vectorIndex, {
term: 'Sample vector',
mode: 'vector',
});
console.log(vectorResults);
高级功能
Orama 还提供了许多高级功能,如自定义数据导入、质量检查、分析工具和安全配置等。用户可以根据需要进行配置,以优化搜索体验。
示例项目
Orama 已被多个知名网站使用,如 nodejs.org、jsr.io 和 tanstack.com。这些网站每天处理数百万次查询,展示了 Orama 的强大性能和可靠性。