Apache Doris
MPP analytics database that began as Baidu's Palo. Version 4.0 put HNSW vector indexes, BM25 full-text search and SQL-callable LLM functions into the same engine that runs the OLAP queries.
Overview
Doris came out of Baidu as the Palo project, was donated to the Apache Incubator in 2018 and graduated to a top-level Apache project in 2022. It is an MPP analytical database in the same family tree as StarRocks, which forked from it, and its usual job is sub-second aggregation over large fact tables with MySQL protocol compatibility so existing tooling connects unchanged.
What makes it relevant to AI work is the 4.0 release of October 2025, which was explicitly built around three things: vector search, stronger full-text search and better ETL. The vector index is HNSW on ARRAY<FLOAT> columns with L2 and inner product distance, and quantization down to sq4 keeps index memory manageable. Crucially the engine pre-filters, applying inverted index predicates first and running ANN top-N over what survives, which is the difference between a hybrid query that works and one that returns wrong results at scale. The SEARCH() function brought Elasticsearch-style query strings and BM25 scoring, so keyword and vector retrieval can be expressed in one SQL statement over one copy of the data.
The AI_* function set deserves its own note. Ten functions, AI_CLASSIFY, AI_EXTRACT, AI_FILTER, AI_GENERATE, AI_FIXGRAMMAR among them, let an analyst call a model directly in a query for sentiment, extraction or summarisation. Point them at a domestic endpoint such as a Qwen or DeepSeek API and you have in-warehouse enrichment without an external job. Point them at a foreign endpoint from a mainland cluster and you have both a latency problem and a compliance conversation. For anyone deploying in China, note also that the community centre of gravity is Chinese: the English site is genuine and maintained but the depth is on the Chinese side.
Key Features
- ✓ 4.0.0 reached GA on 14 October 2025 and the line is still under active patching, with 4.0.8 released on 14 August 2026 and the 4.1 feature line at 4.1.3 on 13 July 2026
- ✓ Native ANN index on ARRAY<FLOAT> columns using HNSW, with L2 and inner product distance via l2_distance_approximate() and inner_product_approximate(), plus flat, sq8 and sq4 quantization to cut index memory
- ✓ Ten AI_* SQL functions including AI_CLASSIFY, AI_EXTRACT, AI_FILTER, AI_GENERATE and AI_FIXGRAMMAR, which call a configured LLM endpoint from inside a query
- ✓ A new SEARCH() function with Elasticsearch-style query string syntax and BM25 relevance scoring, replacing the older TF-IDF ranking for multi-field matching
- ✓ Pre-filtering by default: inverted index predicates narrow the candidate set before the ANN top-N scan runs, which is where most bolted-on vector features degrade
- ✓ MySQL wire protocol compatibility, so existing JDBC drivers, BI tools and MySQL clients connect with no adapter
Where it holds
- • Apache Software Foundation top-level project, so trademark, governance and release process sit outside any single company
- • Keeping the embedding column beside the columns you actually filter on removes a whole sync pipeline between a warehouse and a separate vector store
- • Release cadence is fast and disciplined, with patch releases on the 4.0 line landing roughly monthly through 2026
- • Very heavy production use inside Chinese internet companies has put real load behind the storage and query engine over several years
Where it breaks
- • Vector search here is young. The ANN index only arrived in October 2025, so it has far less field time than a purpose-built vector engine and fewer index types to choose from
- • English documentation trails the Chinese pages, and the useful tuning discussion happens on Chinese mailing lists and in WeChat groups rather than in English forums
- • The AI_* functions ship your column data to whatever model endpoint you configure. That is a data-residency decision for anyone under PIPL or GDPR, not just a config line
- • Cluster operation means understanding frontend and backend node roles and tablet balancing. This is not a single-binary database you forget about
My Take
If your embeddings already live next to the columns you filter on, adding a separate vector database is mostly pipeline tax. Doris 4.0, GA on 14 October 2025 and patched through 4.0.8 in August 2026, added an HNSW index on ARRAY<FLOAT> columns and BM25 scoring in the same SQL engine, with pre-filtering so predicates cut the candidate set before the ANN scan rather than after it. The AI_* functions are the more interesting move: AI_CLASSIFY and AI_EXTRACT reach an LLM from inside a query, which is either very useful or a data-residency problem depending on where you point the endpoint. Read the Chinese docs for the tuning detail, because the English pages are noticeably thinner.
Quick Info
- Pricing:
- open-source
- Openness:
- Open source
- Licence:
- Apache 2.0
- Starting at:
- Apache 2.0 and free, hosted as an Apache Software Foundation top-level project, so there is no licence cost and no vendor holding back features. Commercial support and a managed cloud come from VeloDB, founded by Doris PMC members, priced separately. Your real cost is cluster hardware for the frontend and backend node roles.
- Added:
- Aug 2026
- Updated:
- Aug 2026
Use Cases
Judge it on your own work
The notes above say where Apache Doris holds and where it breaks. The fastest check is your own workload.
Visit website ↗Alternatives to Apache Doris
seekdb
open-sourceAnt Group's OceanBase team open-sourced this AI-native search database under Apache 2.0 (seekdb, from the OceanBase 蚂蚁 stack). Vector, full-text and scalar filters in one SQL query, embeddable in...
TiDB
open-sourcePingCAP's MySQL-compatible distributed SQL database, Apache 2.0 across TiDB, TiKV and TiFlash. Vector columns and HNSW indexes ride on the TiFlash columnar replica, next to transactional rows.
Milvus
open-sourceApache 2.0 vector database from Zilliz, self-hostable from a pip install up to a billion-vector cluster. The open engine under Zilliz Cloud, minus the proprietary Cardinal search core.
pgvector
open-sourcePostgres extension that adds vector types and approximate nearest neighbour indexes, so embeddings live in the same database as the rest of your data.