编程

Typesense 简介

383 2024-08-19 09:58:00

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 是一个二进制文件,你可以使用单个命令在本地或生产环境中运行。