All articles
Vector Databases

Chroma DB Setup Guide: Add AI Memory to Your App in 3 Lines of Python

A simple, developer-friendly guide to setting up Chroma DB, the easiest vector database for local AI applications and RAG memory pipelines.

RuView Editorial2027-06-274 min readChroma DB, Vector Database, Python, AI Memory, RAG
Chroma DB Setup Guide: Add AI Memory to Your App in 3 Lines of Python

Chroma is arguably the most beginner-friendly vector database in the AI ecosystem today. If you want to build a localized memory pipeline for your LLM app without the friction of deploying enterprise databases, Chroma is your absolute best bet. In this setup guide, we'll demonstrate how to get started, embed documents, and query semantic matches in just three lines of clean Python.

Why Chroma DB is Perfect for Local AI

Enterprise databases like Pinecone or Milvus are powerful, but they require complex network configurations or paid API keys. Chroma operates entirely in-memory or as a lightweight local server. It packages its own SQLite database backend and default embedding models, meaning you do not even need to configure an OpenAI key to perform vector similarity queries.

Figure 1: High-fidelity conceptual render analyzing Chroma DB Setup Guide: Add AI Memory to Your App in 3 Lines of Python.

Figure 1: High-fidelity conceptual render analyzing Chroma DB Setup Guide: Add AI Memory to Your App in 3 Lines of Python.

Adding AI Memory in 3 Lines of Code

To install Chroma, simply run pip install chromadb. Once installed, initialization and querying require minimal effort. Here is the absolute basic pipeline:

import chromadb
client = chromadb.Client()
collection = client.create_collection("my_memory")
collection.add(documents=["WiFi sensing works by reading CSI"], ids=["id1"])
Chroma automatically converts your documents into vector embeddings under the hood, stores them, and readies them for querying.

Electromagnetic Wave Propagation & CSI Physics

To fully grasp how wireless sensing works, we must investigate the mathematical principles of modern radio frequency (RF) propagation. Traditional signals like RSSI only provide the average overall power of a received wireless packet. Conversely, Channel State Information (CSI) extracts complex vectors mapping individual Orthogonal Frequency-Division Multiplexing (OFDM) subcarrier channels. In a standard 20 MHz or 40 MHz WiFi spectrum, the signal is split into 56 to 114 separate subcarrier channels. For each subcarrier, the CSI packet header records the exact Amplitude (signal attenuation) and Phase (fractional cycle shift).

Human bodies are comprised of more than 60% water, making them highly conductive dielectric objects in the path of 2.4 GHz and 5.8 GHz frequencies. As waves travel between the transmitter and receiver, they bounce off walls, obstacles, and humans in a phenomenon known as Multipath Propagation. The physical displacement of a human body perturbs this multipath beam network, creating constructive and destructive interference waves. For a comprehensive overview of how these physical shifts are visualized in real-time, try our Interactive 3D WiFi Radar Demo.

Selecting and Configuring ESP32 Microcontrollers

Implementing a spatial WiFi radar does not require industrial SDR (Software Defined Radio) equipment. The RuView project operates entirely on standard, inexpensive microcontrollers. For high-fidelity telemetry, we highly recommend the ESP32-S3 DevKit. The S3 series features dual XTensa LX7 cores with custom vector instruction extensions that provide hardware acceleration for raw signal matrices.

A typical DIY radar setup consists of a transmitter (Tx) emitting beacon packets and a receiver (Rx) listening on the same WiFi channel. During selection, look for boards featuring an external IPEX antenna connector instead of a standard PCB trace antenna, as high-gain external antennas heavily minimize noise. For a full list of certified microcontrollers and specific command line flashing commands, read our extensive ESP32 WiFi Radar Guide.

Figure 2: Technological block diagram demonstrating Selecting and Configuring ESP32 Microcontrollers.

Figure 2: Technological block diagram demonstrating Selecting and Configuring ESP32 Microcontrollers.

Privacy Preserving Spatial Sensing & Surveillance Alternatives

As ambient computing spreads, security systems raise massive privacy concerns. Cameras record actual visual images, creating permanent files that are vulnerable to hacks. Passive WiFi sensing is **100% privacy-preserving**. It captures no optical features, faces, or bodies — only numeric signal amplitude vectors.

The data is entirely ephemeral: processed locally and instantly discarded. It is impossible to reconstruct a face from a CSI matrix. This makes WiFi sensing ideal for bedrooms, bathrooms, and private offices. For a comprehensive introduction to camera-free spatial computing, explore our starter overview What is RuView? Complete Beginner Guide.

FAQ

Does Chroma DB store vectors on disk?

By default, the standard Client initializes in-memory. To persist your data to disk, you simply use the PersistentClient method instead.

What embedding model does Chroma use?

Chroma uses the sentence-transformers library by default, downloading a lightweight, highly accurate embedding model that runs entirely on your local CPU.

RE
RuView Editorial
Independent contributors writing about AI WiFi sensing.
Explore the RuView project on GitHub
Source code, firmware, and AI examples.
View on GitHub