Building RAG Systems with Real-Time Data
Vector search in a streaming database combines continuous data processing with similarity search — enabling real-time recommendations, semantic search, and RAG without a separate vector database. RisingWave v2.6+ supports the vector(n) data type and similarity operators directly in SQL.
Vector Search in RisingWave
-- Store embeddings alongside streaming data
CREATE TABLE products (id INT PRIMARY KEY, name VARCHAR, description VARCHAR,
embedding VECTOR(1536));
-- Similarity search
SELECT id, name, embedding <-> $query_vector as distance
FROM products ORDER BY distance LIMIT 10;
Streaming + Vector: Why Together?
| Separate Stack | Unified (RisingWave) |
| Kafka → Flink → Pinecone → App | Kafka → RisingWave → App |
| 3 systems to maintain | 1 system |
| Embeddings batch-updated | Embeddings stream-updated |
| Stale similarity results | Always-current results |
Use Cases
- Real-time recommendations: Embed user behavior, find similar users/products
- Semantic search: Continuously index new content for similarity queries
- RAG: Keep retrieval index fresh as documents change
- Anomaly detection: Find vectors far from cluster centroids
Frequently Asked Questions
Do I still need Pinecone/Weaviate?
For large-scale vector-only workloads (billions of vectors, ANN indexing), dedicated vector databases are better. For streaming workloads where you need both real-time processing AND vector search on the same data, RisingWave eliminates the need for a separate system.

