Typesense 简介
Typesense 是什么?
Typesense 是一个开源的、可容忍拼写错误的搜索引擎,针对即时(通常低于 50 毫秒)的、根据输入进行搜索的体验和开发者生产力进行了优化。
如果你听说过 ElasticSearch 或 Algolia,可以这么理解 Typesense:
- Algolia 的开源替代方案,解决了一些关键问题
- 易于使用、功能齐备的 ElasticSearch 替代品
为什么使用 Typesense?
Typesense 的目标是缩短上市时间,以建立一个出色的即时搜索体验,提供开箱即用的相关结果。
从头开始设计每个功能,密切关注使其直观易用。每个配置参数都提供了合理的默认值,因此引擎在大多数用例中都是开箱即用的。集所外的“功能齐备”。
显著提高开发人员在开发搜索体验时的生产力。
特性
- 错字容差: 优雅地处理拼写错误,开箱即用。
- 简单且愉悦: 易于设置、集成、操作和扩展。
- 超级快: 使用 C++ 创建。从头开始精心设计,实现低延迟(<50ms)的即时搜索。
- 可调排名: 轻松定制属于你的搜索结果。
- 排序: 在查询时根据特定字段对结果进行动态排序(对于如“按价格排序(降序)”等功能很有用)
- Faceting & Filtering: 深入分析并优化结果。
- Grouping & Distinct: 将相似的结果分组在一起,以显示更多的多样性。
- 联合搜索: 在一个 HTTP 请求中跨越多个集合(指标)进行搜索。
- 地理搜索: 按纬度/经度或边界框内的结果进行搜索和排序。
- 向量搜索: 在 Typesense 中索引机器学习模型的 embedding,并进行最近邻搜索。可用于构建相似性搜索、语义搜索、视觉搜索、推荐等。
- 语义/混合搜索: 使用 S-BERT、E-5 等内置模型或使用 OpenAI、PaLM API 等在 Typesense 中自动生成 embedding,用于查询和索引数据。这允许你将 JSON 数据发送到 Typesense 中,并构建开箱即用的语义搜索+关键字搜索体验。
- 会话搜索(内置 RAG): 根据你在 Typesense 中索引的数据,向 Typesense 发送问题,并让响应是一个完整的句子。想象成 ChatGPT,但使用你自己的数据。
- 图片搜索: 使用图像内容的文本描述搜索图像,或使用 CLIP 模型执行相似性搜索。
- 语音搜索: 通过录音捕获和发送查询 - Typesense 将转录(通过 Whisper 模型)并提供搜索结果。
- Scoped API Key: 为多租户应用生成仅允许访问某些记录的 API 密钥。
- JOIN: 通过公共引用字段连接一个或多个集合,并在查询时将其连接起来。这使你能够优雅地对类 SQL 的关联进行建模。
- 同义词: 将单词定义为彼此的等价词,因此搜索单词也会返回所定义同义词的结果。
- Curation & Merchandizing: 将特定记录提升到搜索结果中的固定位置,以对其进行特征描述。
- 基于 Raft 的集群: 设置高可用的分布式集群。
- 无缝版本升级: 随着 Typesense 新版本的推出,升级就像换掉二进制文件并重新启动 Typesense 一样简单。
- 无运行时依赖: Typesense 是一个二进制文件,你可以使用单个命令在本地或生产环境中运行。