trieve

App Listed

All-in-one platform for search, recommendations, RAG, and analytics offered via API

Downloads
9
Dependents
Not applicable
Stars
2,723
Forks
254
Contributors
54
Commits
5,608
Latest release

About

From the project README ยท

Read the full README

Features

  • ๐Ÿ”’ Self-Hosting in your VPC or on-prem: We have full self-hosting guides for AWS, GCP, Kubernetes generally, and docker compose available on our documentation page here.
  • ๐Ÿง  Semantic Dense Vector Search: Integrates with OpenAI or Jina embedding models and Qdrant to provide semantic vector search.
  • ๐Ÿ” Typo Tolerant Full-Text/Neural Search: Every uploaded chunk is vector'ized with naver/efficient-splade-VI-BT-large-query for typo tolerant, quality neural sparse-vector search.
  • ๐Ÿ–Š๏ธ Sub-Sentence Highlighting: Highlight the matching words or sentences within a chunk and bold them on search to enhance UX for your users. Shout out to the simsearch crate!
  • ๐ŸŒŸ Recommendations: Find similar chunks (or files if using grouping) with the recommendation API. Very helpful if you have a platform where users' favorite, bookmark, or upvote content.
  • ๐Ÿค– Convenient RAG API Routes: We integrate with OpenRouter to provide you with access to any LLM you would like for RAG. Try our routes for fully-managed RAG with topic-based memory management or select your own context RAG.
  • ๐Ÿ’ผ Bring Your Own Models: If you'd like, you can bring your own text-embedding, SPLADE, cross-encoder re-ranking, and/or large-language model (LLM) and plug it into our infrastructure.
  • ๐Ÿ”„ Hybrid Search with cross-encoder re-ranking: For the best results, use hybrid search with BAAI/bge-reranker-large re-rank optimization.
  • ๐Ÿ“† Recency Biasing: Easily bias search results for what was most recent to prevent staleness
  • ๐Ÿ› ๏ธ Tunable Merchandizing: Adjust relevance using signals like clicks, add-to-carts, or citations
  • ๐Ÿ•ณ๏ธ Filtering: Date-range, substring match, tag, numeric, and other filter types are supported.
  • ๐Ÿ‘ฅ Grouping: Mark multiple chunks as being part of the same file and search on the file-level such that the same top-level result never appears twice

Are we missing a feature that your use case would need? - call us at 628-222-4090, make a Github issue, or join the Matrix community and tell us! We are a small company who is still very hands-on and eager to build what you need; professional services are available.

Local Development

Installing via Smithery

To install Trieve for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install trieve-mcp-server --client claude
System Dependencies
Linux (Debian/Ubuntu)
sudo apt install curl \
gcc \
g++ \
make \
pkg-config \
python3 \
python3-pip \
libpq-dev \
libssl-dev \
openssl
Linux (Arch)
sudo pacman -S base-devel postgresql-libs
MacOS
# Install Xcode command line tools
xcode-select --install

# Install Homebrew if not already installed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Install required packages
brew install pkg-config openssl
Install NodeJS and Yarn

You can install NVM using its install script.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash

You should restart the terminal to update bash profile with NVM. Then, you can install NodeJS LTS release and Yarn.

nvm install --lts
npm install -g yarn
Make server tmp dir
mkdir server/tmp
Install rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Install cargo-watch
cargo install cargo-watch
Setup env's

You might need to create the analytics directory in ./frontends

cp .env.analytics ./frontends/analytics/.env
cp .env.chat ./frontends/chat/.env
cp .env.search ./frontends/search/.env
cp .env.example ./server/.env
cp .env.dashboard ./frontends/dashboard/.env
Add your LLM_API_KEY to ./server/.env

Here is a guide for acquiring that.

Steps once you have the key
  1. Open the ./server/.env file
  2. Replace the value for LLM_API_KEY to be your own OpenAI API key.
  3. Replace the value for OPENAI_API_KEY to be your own OpenAI API key.
Override the following keys in your terminal for local dev

The PAGEFIND_CDN_BASE_URL and S3_SECRET_KEY_CSVJSONL can be set to a random list of strings.

export OPENAI_API_KEY="your_OpenAI_api_key" \
LLM_API_KEY="your_OpenAI_api_key" \
PAGEFIND_CDN_BASE_URL="lZP8X4h0Q5Sj2ZmV,aAmu1W92T6DbFUkJ,DZ5pMvz8P1kKNH0r,QAqwvKh8rI5sPmuW,YMwgsBz7jLfN0oX8" \
S3_SECRET_KEY_CSVJSONL="Gq6wzS3mjC5kL7i4KwexnL3gP8Z1a5Xv,V2c4ZnL0uHqBzFvR2NcN8Pb1g6CjmX9J,TfA1h8LgI5zYkH9A9p7NvWlL0sZzF9p8N,pKr81pLq5n6MkNzT1X09R7Qb0Vn5cFr0d,DzYwz82FQiW6T3u9A4z9h7HLOlJb7L2V1" \
GROQ_API_KEY="GROQ_API_KEY_if_applicable"

Start docker container services needed for local dev
cat .env.chat .env.search .env.server .env.docker-compose > .env

./convenience.sh -l
Start embedding servers

We offer 2 docker-compose files for embedding servers. One for GPU and one for CPU.

docker compose -f docker-compose-cpu-embeddings.yml up -d

or

docker compose -f docker-compose-gpu-embeddings.yml up -d
  • Note on embedding servers. If you want to use a separate GPU enabled device for embedding servers you will need to update the following parameters
SPARSE_SERVER_QUERY_ORIGIN
SPARSE_SERVER_DOC_ORIGIN
EMBEDDING_SERVER_ORIGIN
SPARSE_SERVER_QUERY_ORIGIN
Using CPU embeddings on MacOS
cp docker-compose-cpu-embeddings.override.mac docker-compose-cpu-embeddings.override.yml
docker-compose -f docker-compose-cpu-embeddings.yml -f docker-compose-cpu-embeddings.override.yml docker up -d
Install front-end packages for local dev
cd frontends
yarn

cd ..

cd clients/ts-sdk
yarn build

cd ../..

Start services for local dev

It is recommend to manage services through tmuxp, see the guide here or terminal tabs.

cd frontends
yarn
yarn dev
cd server
cargo watch -x run
cd server
cargo run --bin ingestion-worker
cd server
cargo run --bin file-worker
cd server
cargo run --bin delete-worker
cd search
yarn
yarn dev
Verify Working Setup

After the cargo build has finished (after the tmuxp load trieve):

Additional Instructions for testing cross encoder reranking models

To test the Cross Encoder rerankers in local dev,

  • click on the dataset, go to the Dataset Settings -> Dataset Options -> Additional Options and uncheck the Fulltext Enabled option.
  • in the Embedding Settings, select your reranker model and enter the respective key in the adjacent textbox, and hit save.
  • in the search playground, set Type -> Semantic and select Rerank By -> Cross Encoder
  • if AIMon Reranker is selected in the Embedding Settings, you can enter an optional Task Definition in the search playground to specify the domain of context documents to the AIMon reranker.
Debugging issues with local dev

Reach out to us on discord for assistance. We are available and more than happy to assist.

Debug diesel by getting the exact generated SQL

diesel::debug_query(&query).to_string();

Running evals

The evals package loads an mcp client that then runs the index.ts file, so there is no need to rebuild between tests. You can load environment variables by prefixing the npx command. Full documentation can be found here.

OPENAI_API_KEY=your-key  npx mcp-eval evals.ts clients/mcp-server/src/index.ts

Local Setup for Testing Stripe Features

Install Stripe CLI.

  1. stripe login
  2. stripe listen --forward-to localhost:8090/api/stripe/webhook
  3. set the STRIPE_WEBHOOK_SECRET in the server/.env to the resulting webhook signing secret
  4. stripe products create --name trieve --default-price-data.unit-amount 1200 --default-price-data.currency usd
  5. stripe plans create --amount=1200 --currency=usd --interval=month --product={id from response of step 3}

Contributors

License
MIT
Crate facts
Not measured
  • Runs on, Native code and Python bindings read crates on crates.io. This entry lists no crate.

Compare with similar projects

Order: strongest tier first, then most downloads, then name, with unmeasured values last. A library counts downloads over 30 days. An app counts binary downloads per release. An app with none counts its crate downloads over 30 days. ML Rust runs this catalogue, so its closest project always gets a row.

trieve beside the projects that share a topic with it
ProjectDownloadsDependentsStarsLatest releaseRuns on (GPU)Native codeLicense
trieve This page App Listed

All-in-one platform for search, recommendations, RAG, and analytics offered via API

9 binary downloads per release Not applicable 2,723 Not measured Not measured MIT

Rust wrapper for the Meilisearch API. Meilisearch is a powerful, fast, open-source, easy to use and deploy search engine.

Also in Text, embeddings and search.

170,111 downloads over 30 days 16 431 0.33.0 GPU support unknown No native code found MIT
meilisearch App Featured

A lightning-fast search engine API bringing AI-powered hybrid search to your sites and applications.

Also in Text, embeddings and search.

5,660 binary downloads per release Not applicable 59,815 Not measured Not measured Not measured
ck App Listed

Local first semantic and hybrid BM25 grep / search tool for use by AI and humans!

Also in Text, embeddings and search.

1,775 binary downloads per release Not applicable 1,772 0.8.1 GPU support unknown Binds native code: tree-sitter, tree-sitter-language, openssl-sys (feature openssl), ort-sys (feature mixedbread) Apache-2.0 OR MIT
semtools App Listed

Semantic search and document parsing tools for the command line

Also in Text, embeddings and search.

541 binary downloads per release Not applicable 1,882 3.0.1 GPU support unknown Binds native code: zstd-sys (feature workspace) MIT
tinysearch App Listed

๐Ÿ” Tiny, full-text search engine for static websites built with Rust and Wasm

Also in Text, embeddings and search.

147 binary downloads per release Not applicable 2,980 Not measured Not measured Apache-2.0
blazr App Listed

Inference server for LLMs, speech and embeddings: OpenAI-compatible routes with streaming, plus speech synthesis (TTS) and transcription (ASR). Serves Llama, Mistral, Qwen, Mamba2, MLA+MoE and hybrid models from SafeTensors, AWQ, GPTQ and GGUF.

Also in Build LLM apps and agents.

8 binary downloads per release Not applicable 7 0.7.1 CUDA, WebGPU Binds native code: ring (feature distributed) Apache-2.0
Why ListedNo archive, New or Featured rule places it, so it is Listed.

What it lacks for Featured

  • The check holds no value for Homebrew installs on request over 365 days, Repology repository families, Docker pull growth over 90 days. A gate that lacks its signal does not pass.

What else the check found

  • The last activity is on 25 Jan 2026, 288 days ago. The rules expect an update within 365 days. Dormancy rule

Not measured: First release, Homebrew installs on request over 365 days, Repology repository families, Docker pull growth over 90 days.

Exact rules: Listed, Featured app. The check on applied thresholds version 9.

Every rule outcome, as the check records it
  • expected-interval: app: E = 365 days
  • dormancy: last activity 2026-01-25, 288 days ago, E = 365: active
  • featured: not featured: unknown homebrew_on_request_365d, repology_families, docker_pull_growth_90d
  • listed: listed: no archive, new or featured rule applies

Measurements and sources

Each signal row shows the raw value, its source and the fetch date. The Sources list gathers every distinct source on this page. Movement needs more history.

Sources4 sources
Adoption9 binary downloads per release4 not measured
Adoption measurements
SignalValueSourceFetchedCounts
Active dependentsNot measuredYes
New dependents (365 days)Not measuredYes
Peak active dependentsNot measuredYes
Active dependents as a share of the peakNot measuredYes
Binary downloads per release9GitHub releasesYes
MaintenanceLatest human commit: 9 months ago7 not measured
Maintenance measurements
SignalValueSourceFetchedCounts
Latest human commit2026-01-25GitHub repositoryYes
Latest release2025-03-07GitHub releasesYes
First releaseNot measuredYes
Latest versionNot measuredYes
Days the oldest outside issue waits for a reply148GitHub repositoryYes
Maintainer replies over 365 days0GitHub repositoryYes
Repository archivedfalseGitHub repositoryYes
Repository gonefalseGitHub repositoryYes
Release commit or manifest in the repoNot measuredYes
Published docsNot measuredYes
Latest release fails cargo checkNot measuredYes
Build check dateNot measuredYes
Build check toolchainNot measuredYes
SecurityNot measured
Security measurements
SignalValueSourceFetchedCounts
Unpatched vulnerabilities past the grace windowNot measuredYes
RustSec unmaintained advisoryNot measuredYes
Deprecation noticeNot measuredYes
Deprecated requirementNot measuredYes
Distribution27 binary downloads over the last 3 releases10 not measured
Distribution measurements
SignalValueSourceFetchedCounts
ReleasesNot measuredYes
Downloads over 30 daysNot measuredYes
Binary downloads over the last 3 releases27GitHub releasesYes
Homebrew installs on request over 365 daysNot measuredYes
Repology repository familiesNot measuredYes
Docker pull growth over 90 daysNot measuredYes
Docker pulls at the growth baselineNot measuredYes
Every version a prereleaseNot measuredYes
Every version 0.0.xNot measuredYes
Every version yankedNot measuredYes
Crate deleted from crates.ioNot measuredYes
Repository2,723 stars, 254 forks, 54 contributors, 5,608 commits. Stars alone never qualify a project.1 not measured
Repository measurements
SignalValueSourceFetchedCounts
GitHub stars2723GitHub repositoryYes โ€” one part of the repository route
GitHub forks254GitHub repositoryYes โ€” one part of the repository route
Contributors with a GitHub account54GitHub contributorsYes โ€” one part of the repository route
Commits on the default branch5608GitHub repositoryNo
Repository's main crate left out of the entryNot measuredYes
Facts that never count
Facts that never count measurements
SignalValueSourceFetchedCounts
LicenseMITGitHub repositoryNo
Runs on, from listed crates and their direct dependenciesNot measuredNo
What shows each backendNot measuredNo
Native code, from listed crates and their dependenciesNot measuredNo
Python bindings, from direct dependencies of listed cratesNot measuredNo
Crates that depend on a listed crate directlyNot measuredNo

Corrections and review history

Report a correction

No correction applies to this entry.

Judgments

A judgment enters only through an approved issue and a merged pull request.

No judgment applies to this entry.