blog.dopana

Back

Tìm kiếm là một trong những tính năng khó làm đúng nhất. Elasticsearch quá nặng để setup và vận hành. Algolia quá đắt khi scale. Typesense là lựa chọn thứ ba — mã nguồn mở, chạy nhanh, dễ deploy, và đầy đủ tính năng hiện đại.

Typesense Là Gì?#

Typesense là search engine mã nguồn mở (GPL-3.0, 26k+ sao GitHub), viết bằng C++. Nó được thiết kế để thay thế Algolia (cho người muốn tự host) và Elasticsearch (cho người muốn đơn giản hơn).

Một binary duy nhất, không runtime dependency, chạy ngay với một câu lệnh.

Tính Năng Chính#

Tìm Kiếm Cơ Bản#

  • Typo Tolerance — Xử lý lỗi chính tả ngay khi đánh, không cần cấu hình
  • Tunable Ranking — Tuỳ chỉnh ranking theo ý muốn
  • Sorting — Sort theo field dynamic
  • Faceting & Filtering — Lọc và phân loại kết quả
  • Grouping & Distinct — Nhóm kết quả tương tự
  • Federated Search — Search nhiều collection trong một request
  • Geo Search — Tìm kiếm quanh toạ độ / trong bounding box
  • JOINs — Kết nối collection qua reference field

AI & Hiện Đại#

  • Vector Search — Tìm nearest neighbor cho embedding
  • Semantic / Hybrid Search — Tự động sinh embedding từ S-BERT, E-5, hoặc OpenAI, PaLM
  • Conversational Search (RAG) — Đặt câu hỏi, Typesense trả lời bằng câu hoàn chỉnh dựa trên dữ liệu của bạn
  • Natural Language Search — Chuyển đổi câu hỏi tự nhiên thành filter và sort
  • Image Search — Tìm ảnh bằng mô tả văn bản qua CLIP model
  • Voice Search — Ghi âm giọng nói, Typesense nhận dạng qua Whisper và tìm kiếm

Hạ Tầng#

  • Scoped API Keys — API key chỉ truy cập một số record nhất định
  • Synonyms — Từ đồng nghĩa
  • Curation & Merchandizing — Boost record lên vị trí cố định
  • Raft-based Clustering — Cluster phân tán, high availability
  • No Runtime Dependencies — Một binary duy nhất

Hiệu Năng#

Kết quả benchmark trên server 4 vCPU:

DatasetRecordsRAMIndex timeThroughputLatency
Recipes2.2M900MB3.6min104 qps11ms
Books (OpenLibrary)28M14GB78min46 qps28ms
Amazon Products3M250 qps

Typesense Cloud phục vụ 10 tỷ search mỗi tháng. Docker images đã được download hơn 12 triệu lần.

So Sánh Với Elasticsearch#

Tiêu chíTypesenseElasticsearch
Ngôn ngữC++ (single binary)Java (JVM)
ConfigSmart defaults, ít configHàng ngàn tham số
SetupDocker một lệnhPhức tạp, cần tuning JVM
Dùng choSearch UX, ứng dụngLogs, billions docs
RAM khi mới start~30MB~1GB+

So Sánh Với Algolia#

Tiêu chíTypesenseAlgolia
LoạiOpen source, tự host / cloudSaaS, proprietary
Chi phíFixed hourly (Typesense Cloud)Theo records + operations
Sort orderMột index đa sortNhiều index = tốn memory
ConfigQuery timeIndex time

Quick Start#

Chạy Typesense với Docker:

docker run -p 8108:8108 -v/tmp/data:/data \
  typesense/typesense:30.2 \
  --data-dir /data \
  --api-key=Hu52dwsas2AdxdE
bash

Tạo collection và index document (Python):

stork vẫn tìm ra Stark Industries — typo tolerance hoạt động ngay khi đánh sai.

Framework Integrations#

Typesense có sẵn client cho hầu hết ngôn ngữ — JavaScript, Python, PHP, Ruby, Go, Java, Rust, Dart — và tích hợp với Laravel, WordPress, WooCommerce, Docusaurus, Gatsby, Symfony, InstantSearch, Firebase.

Live Demos#

Typesense cung cấp nhiều demo thực tế trên các dataset lớn:

Kết Luận#

Typesense là search engine lý tưởng nếu bạn cần search nhanh, dễ deploy, không muốn quản lý Elasticsearch phức tạp hay trả tiền Algolia đắt đỏ. Một binary C++, đầy đủ vector search + semantic search + RAG — đủ cho hầu hết ứng dụng cần tìm kiếm.

Tài liệu tham khảo#