Answers you can trust, from Codeables
Every page on Codeables is structured and verified — built so people and the AI agents they rely on can trust it. Explore more from the source behind this answer.
Explore CodeablesLiquidMetal AI vs Pinecone: if we already have Pinecone, what changes (ingestion, retrieval, auth, observability) if we move to LiquidMetal?
Most teams land on Pinecone the same way: you need vector search, you want it managed, and you don’t want to babysit an index. It’s a solid choice for similarity search. The moment you start wiring in auth, billing, observability, RAG pipelines, and agent memory, though, you’re back in glue work. Moving to LiquidMetal doesn’t just “swap the vector database”—it changes how you ingest data, retrieve context, secure access, and observe AI behavior across the entire stack.
Quick Answer: If you already use Pinecone, moving to LiquidMetal AI replaces your custom ingestion pipelines, standalone vector store, and separate auth/observability layer with Raindrop’s SmartBuckets, SmartMemory, SmartSQL, and built-in Authentication and Observers. Vector search becomes “built in, not bolted on,” so your ingestion, retrieval, auth, and observability are defined once in manifests and deployed as a production API with versioning, rollback, and full traces for every AI decision.
Why This Matters
Pinecone gives you an enterprise-grade similarity search service. It doesn’t give you:
- a production API,
- stateful agents,
- integrated auth and billing, or
- end-to-end observability and rollback.
As your system grows, most of the time isn’t spent “doing vector search”—it’s managing the pieces around it: ETL into Pinecone, schema drift, multiple memory stores for sessions, homegrown RBAC, and stitching traces across services. Moving to LiquidMetal means you treat intelligence as a primitive and let the platform own the plumbing.
Key Benefits:
- Unified ingestion & retrieval: Replace custom ETL + Pinecone index management with SmartBuckets (storage + automatic embeddings) and SmartMemory (persistent agent state) that are directly addressable from your API.
- Built-in auth & monetization: Move from application-level auth glue (JWT validation, RBAC logic, usage counters) to declarative Authentication and Monetization primitives with plans, usage tracking, and rate limits wired in.
- Full observability & versioning: Instead of scattered logs and opaque vector queries, you get full tracing of every AI decision, plus complete versioning across code, data, and smart primitives with instant rollback/rollforward.
Core Concepts & Key Points
| Concept | Definition | Why it's important |
|---|---|---|
| SmartBuckets | S3-compatible storage with automatic vector embeddings, semantic & keyword search, and graph-based search | Replaces custom ingestion → Pinecone index pipelines with AI-ready storage that’s queryable immediately, no separate vector DB. |
| SmartMemory | Persistent agent memory with working/episodic and semantic/procedural layers plus session rehydration | Solves “functions that forget between requests,” removing the need for bespoke Pinecone-backed chat/agent memory stores. |
| Authentication & Monetization | Built-in JWT/OAuth, RBAC, API keys, pricing plans, usage tracking, and rate limiting | Shifts auth/billing from custom code around Pinecone into the platform, so your API is a product from day one. |
How It Works (Step-by-Step)
At a high level, moving from Pinecone to LiquidMetal (Raindrop) looks like this:
-
Re-center on APIs, not indexes:
You define your backend as manifests (Developer Mode) or describe it in natural language (AI Mode). Instead of managing a Pinecone index directly, you declare SmartBuckets/SmartMemory and Raindrop builds, tests, and deploys the API for you. -
Migrate ingestion into SmartBuckets & SmartMemory:
Your existing content (documents, events, logs, product data) moves into SmartBuckets or becomes part of SmartMemory. Embeddings and indexing happen automatically, with optional graph-based links. No separate ingestion job → encoder → Pinecone index pipeline. -
Wire retrieval, auth, and observability in one place:
Retrieval becomes a first-class operation in your manifests (e.g., “search this SmartBucket” or “read this user’s SmartMemory”), and you attach Authentication, RBAC, and Monetization policies at the API level. Observers and full traces cover every smart primitive call—including what was retrieved and why.
Let’s break this down by area: ingestion, retrieval, auth, and observability.
1. Ingestion: From ETL + Pinecone Indexing to AI-Ready Storage
How ingestion usually looks with Pinecone
A typical Pinecone setup looks like:
- Source data in S3, Postgres, or a CMS.
- A custom pipeline that:
- extracts content,
- chunks it,
- hits an embedding model (OpenAI, local, etc.),
- writes vectors + metadata into Pinecone.
- Periodic jobs for re-indexing, schema changes, or backfills.
- Separate storage for raw documents vs. vectors.
You’re responsible for:
- Orchestrating the ETL,
- managing embedding model versions,
- maintaining metadata schemas,
- and keeping storage + vector index in sync.
What changes with LiquidMetal (Raindrop)
On LiquidMetal, ingestion is centered around SmartBuckets and SmartMemory:
-
SmartBuckets
- S3-compatible storage.
- Automatic vector embeddings at write time.
- Semantic search, keyword search, and graph-based search built in.
- Raw objects and their embedding live together as one primitive.
-
SmartMemory
- Stores agent state, user sessions, and episodic history.
- Automatically generates semantic representations of experiences.
- Designed for chat, workflows, and agent loops—not just static documents.
Instead of managing an external pipeline into Pinecone, you:
- Write content directly into SmartBuckets (files, records, JSON blobs).
- Let Raindrop handle embedding and indexing transparently.
- Use Actors or Services to process streams of data if you need custom transformation, but not to get vectors into a separate store.
Concrete ingestion changes:
-
No explicit “index creation” step.
You define a SmartBucket in your manifest; Raindrop handles storage + vector index behind it. -
No separate “vector DB client” in your app.
Your code talks to Raindrop’s API; smart primitives handle search. -
Embedding model selection is centralized.
You configure it once at the SmartBucket/SmartInference level; every ingestion call uses the configured model.
Result: Ingestion becomes “write to SmartBucket/SmartMemory, done,” instead of “write to storage, embed, push to Pinecone, keep everything in sync.”
2. Retrieval: From Pinecone SDK Calls to Smart Primitives in Your API
How retrieval usually looks with Pinecone
Common RAG pattern with Pinecone:
- Your app:
- collects a query,
- calls an embedding model,
- queries Pinecone with the vector,
- applies metadata filters,
- formats results,
- feeds them into an LLM.
The API boundary is often unclear: your backend is both orchestrator and index client. Traces across LLM and Pinecone are split across systems.
What changes with LiquidMetal
With LiquidMetal, retrieval is a first-class operation of your API via SmartBuckets and SmartMemory:
-
SmartBuckets retrieval:
- You call
semantic_search,keyword_search, or graph-style traversal on a bucket. - Filters and queries are expressed declaratively in your manifest or in simple API calls.
- The system handles embedding and index lookup inside the primitive.
- You call
-
SmartMemory retrieval:
- You query a user/agent’s persistent memory: episodic logs, important facts, procedural knowledge.
- Session rehydration is built in—agents pick up where they left off without re-querying Pinecone every time.
-
SmartInference integration:
- You can route retrieved context and prompts through SmartInference, a unified interface to 60+ models with auto-scaling.
- Because retrieval lives on the same platform as inference, Raindrop logs the entire chain—prompt, retrieval results, model choice, and output.
Concrete retrieval changes:
-
You stop calling Pinecone directly.
Retrieval calls are now part of your Raindrop services/Actors and reference SmartBuckets/SmartMemory. -
Query language changes from Pinecone’s API to Raindrop’s primitives.
Conceptually similar (semantic search + filters), but defined once in your manifests and re-used. -
Multi-modal and graph-style retrieval become built-in knobs.
You no longer bolt on a knowledge graph separate from Pinecone; SmartBuckets support graph-based search out of the box.
Result: Retrieval is part of your backend’s contract, not “just” a low-level vector index you call from a monolith.
3. Auth & Access Control: From Hand-Rolled Around Pinecone to Declarative in Raindrop
How auth usually looks with Pinecone
Pinecone sits behind your stack. It doesn’t know about:
- users,
- tenants,
- plans,
- or roles.
You typically:
- Terminate auth at an API gateway or your backend.
- Validate tokens (JWT/OAuth) yourself.
- Implement RBAC / tenancy in application code.
- Map user/tenant IDs to Pinecone namespaces or metadata rules.
- Hand-roll billing and usage tracking around Pinecone requests.
What changes with LiquidMetal
Raindrop includes Authentication and Monetization primitives so you don’t bolt auth/billing on around the vector layer; you define them alongside your smart primitives:
-
Authentication:
- Built-in support for JWT and OAuth.
- Role-based access control (RBAC).
- API keys for programmatic access.
-
Monetization & plans:
- Tiered pricing plans with limits (requests, data, features).
- Usage tracking and rate limiting.
- Payments handled by the platform, so you ship an API, not a prototype.
-
Declarative integration:
- In your manifest, you declare who can call which endpoints, what roles they need, and how usage is counted.
- SmartBuckets/SmartMemory/SmartSQL respect these policies automatically.
Concrete auth changes:
-
You remove custom auth glue around Pinecone.
Pinecone auth becomes irrelevant because you don’t expose it; Raindrop is the boundary. -
Tenant isolation is handled at the platform level.
Actors and smart primitives are isolated; one user’s data does not affect another’s. -
Billing logic shifts from application code to platform configuration.
You define plans and usage metrics once; calls to SmartInference, SmartBuckets, etc. are counted automatically.
Result: Instead of gating Pinecone with custom middleware, you gate your entire intelligent API with Raindrop’s built-in Authentication and Monetization.
4. Observability: From Logs + Metrics Around Pinecone to Full AI Traces
How observability usually looks with Pinecone
You’ll typically have:
- Pinecone metrics (latency, QPS, index health).
- Application logs for incoming requests and LLM calls.
- Maybe a tracing system (OpenTelemetry, etc.) you manually instrument.
Gaps:
- No end-to-end trace from user request → retrieval → model call → response.
- Limited visibility into what context was retrieved and how it influenced output.
- Hard to answer “what changed?” when behavior shifts (new embeddings, index rebuild, etc.).
What changes with LiquidMetal
Raindrop is built for Full Observability of AI systems:
-
Every AI decision logged and traceable:
- SmartInference calls (prompt, model, parameters, outputs).
- SmartBuckets searches (query, filters, hits).
- SmartMemory reads/writes (what context was used).
- SmartSQL queries and PII detection events.
-
Versioned code + data + primitives:
- “Complete Versioning” across the entire application—manifests, smart primitives, and their configurations.
- Instant rollback and rollforward: if a change to retrieval logic or embeddings degrades quality, you can revert with confidence.
-
Observers & debugging:
- You can inspect flows end-to-end inside Raindrop: who called what, with which context, and what changed over time.
- Useful both for debugging and for compliance/audit trails.
Concrete observability changes:
-
You stop treating Pinecone as a black-box metric source.
Retrieval, inference, and state changes are all visible as part of one trace. -
Root-cause analysis gets faster.
If a user’s answer looks wrong, you see: input → retrieval hits → model output → version of the application that handled it. -
Production experiments become safe.
With full versioning, you can A/B retrieval strategies or models and roll back if they underperform.
Result: Observability shifts from “monitor the vector DB” to “understand the entire AI decision pipeline.”
5. Stateful Agents & Memory: Fixing “Functions That Forget” vs. Index-Only Pinecone
Pinecone is excellent at similarity search; it’s not a memory system.
The usual patch with Pinecone
To give agents “memory” on top of Pinecone, you often:
- Store chat history or events in a database.
- Periodically embed and push them into Pinecone.
- Query Pinecone each time with the latest context.
- Manually stitch together:
- recent turns (for recency),
- Pinecone hits (for semantics),
- and rules for what to keep or discard.
What changes with LiquidMetal
LiquidMetal is built “for AI agents,” not just RAG:
-
SmartMemory:
- Encodes both episodic (what happened) and semantic/procedural (learned patterns) memory.
- Supports session rehydration—agents can resume with the right context without recomputing everything.
- Integrates directly with Actors, the stateful compute units.
-
Actors:
- Stateful compute units that maintain persistent data and have a unique identity.
- Perfect for user sessions, agent instances, carts, chat rooms, and long-running workflows.
- Built-in scheduling/alarms for periodic tasks (e.g., summarizing and compressing memory).
Combined, this replaces the “stateless serverless + Pinecone” pattern where:
- Functions forget everything between requests.
- You compensate by over-querying the vector DB.
- You reinvent memory management and summarization in app code.
Result: Agents get a real memory layer with clear semantics, rather than just a vector index used as a pseudo-memory.
6. Migration Considerations: How Hard Is It to Move Off Pinecone?
If you’re already invested in Pinecone, the practical question is: What does migration actually look like?
Typical steps:
-
Inventory your Pinecone usage:
- Which indices/namespaces are active?
- What embeddings are you using?
- How do you map users/tenants to vectors?
- Where does Pinecone sit in your call graph now?
-
Map indices → SmartBuckets / SmartMemory:
- Static or reference content (docs, product catalogs, knowledge base) → SmartBuckets.
- Per-user/agent history and “memory” → SmartMemory.
-
Rebuild ingestion around SmartBuckets:
- Instead of encoding and pushing into Pinecone, you:
- write raw objects to SmartBuckets,
- let Raindrop handle embeddings and indexing.
- If you have existing vectors you must preserve, you can backfill via import jobs while keeping the original content as the system of record.
- Instead of encoding and pushing into Pinecone, you:
-
Refactor retrieval logic to use Raindrop APIs:
- Replace Pinecone SDK calls with Raindrop service/Actor calls that:
- invoke SmartBucket search,
- read from SmartMemory,
- and call SmartInference in one flow.
- Replace Pinecone SDK calls with Raindrop service/Actor calls that:
-
Move auth and billing logic into manifests:
- Define Authentication (JWT/OAuth, RBAC, API keys) and Monetization (plans, limits) in your Raindrop application.
- Remove custom middle-layer logic that only existed to guard Pinecone and LLM calls.
-
Turn on observability and versioning:
- Use Raindrop’s versioning to snapshot the initial migrated app.
- Deploy, observe traces, and compare behavior against your Pinecone-backed baseline.
- Rollforward/rollback as you tune retrieval and prompts.
You can also adopt LiquidMetal incrementally—e.g., start with a single SmartBucket-backed feature while Pinecone handles legacy workloads—then migrate more flows once you’re comfortable with the platform.
Common Mistakes to Avoid
-
Treating LiquidMetal as “Pinecone plus extras.”
LiquidMetal isn’t a vector DB; it’s an AI-native runtime with smart primitives and full governance. If you only swap the vector piece without moving auth/observability into Raindrop, you’ll miss most of the value. -
Copy-pasting Pinecone’s schema 1:1 into SmartBuckets.
Pinecone’s index-centric schema is optimized for vectors first. SmartBuckets give you more options (semantic, keyword, graph). Re-think your object/metadata design to use those capabilities instead of mirroring the old layout.
Real-World Example
A team I worked with had a customer-facing analytics assistant:
-
Before:
- Data in Snowflake, summaries in S3.
- Nightly ETL pipeline → embed summaries → store in Pinecone.
- Backend:
- validated JWT,
- queried Snowflake for filters,
- hit Pinecone for context,
- called OpenAI,
- logged parts of the flow across three different systems.
- Auth and usage limits implemented manually per route.
-
After moving to LiquidMetal:
- Raw summaries moved into SmartBuckets; embeddings were automatic.
- Tabular analytics stayed in their DB but were exposed via SmartSQL (natural language to SQL, with automatic PII detection).
- Chat sessions and user-specific preferences stored in SmartMemory.
- The whole workflow (auth → retrieval → SmartSQL → SmartInference) declared in Raindrop manifests:
- Authentication via JWT + RBAC.
- Monetization with tiered plans (free, pro, enterprise) and request limits.
- Observability:
- Each question produced a single trace covering SmartBucket search, SmartSQL queries, and SmartInference calls.
- When they changed how context was constructed, they captured a new application version and rolled back within minutes when a regression appeared.
They turned off their Pinecone cluster, removed a few thousand lines of pipeline + glue code, and had a production-grade API with built-in billing and full audit trails instead of a stitched-together stack.
Pro Tip: When you migrate, don’t just replicate your Pinecone queries. Start by modeling your domain with SmartBuckets + SmartMemory and let Raindrop’s primitives dictate the cleanest retrieval pattern—even if that means fewer, richer searches instead of many fine-grained Pinecone calls.
Summary
If you already run Pinecone, moving to LiquidMetal AI (Raindrop) means:
- Ingestion is no longer “extract → embed → push to vector DB.” You write to SmartBuckets and SmartMemory; embeddings, indexing, and graph context are built in.
- Retrieval stops being an SDK glued into your app and becomes a first-class smart primitive in your API, alongside SmartInference and SmartSQL.
- Auth & monetization move from handwritten middleware around Pinecone to declarative Authentication and Monetization primitives that make your backend a product from day one.
- Observability shifts from log/metric stitching to full traces with complete versioning across code, data, and smart primitives, and instant rollback when behavior changes.
You’re not just swapping out a vector store—you’re replacing a pile of glue with integrated intelligence and governance designed for agents and production RAG.