Migrate from Weaviate to REM Labs

Weaviate gives you vector search with GraphQL. REM Labs gives you AI memory -- vector search plus full-text retrieval, entity graphs, temporal decay, and neural reranking. This guide covers exporting your Weaviate collections and importing them into REM Labs.

What You Gain

Step 1: Export from Weaviate

Use the Weaviate client to export all objects from a collection:

import weaviate from "weaviate-client"; import fs from "fs"; const client = await weaviate.connectToLocal(); const collection = client.collections.get("Document"); const exported = []; for await (const item of collection.iterator()) { exported.push({ id: item.uuid, properties: item.properties, text: item.properties.content || item.properties.text || "" }); } fs.writeFileSync("weaviate-export.json", JSON.stringify(exported, null, 2)); console.log(`Exported ${exported.length} objects`);

Step 2: Import into REM Labs

import { RemClient } from "@remlabs/sdk"; import fs from "fs"; const rem = new RemClient({ apiKey: process.env.REMLABS_API_KEY }); const data = JSON.parse(fs.readFileSync("weaviate-export.json", "utf-8")); let count = 0; for (const obj of data) { if (!obj.text) continue; await rem.remember({ content: obj.text, namespace: "weaviate-import", metadata: { weaviate_id: obj.id, ...obj.properties }, tags: obj.properties.category ? [obj.properties.category] : [] }); count++; if (count % 50 === 0) console.log(`${count}/${data.length}`); } console.log(`Imported ${count} memories`);

Step 3: Replace Query Code

Weaviate queries use GraphQL with nearText or hybrid operators. REM uses a single recall method that runs all retrieval strategies automatically:

// Before (Weaviate GraphQL) const result = await client.graphql.get() .withClassName("Document") .withNearText({ concepts: ["refund policy"] }) .withLimit(5) .withFields("content category _additional { distance }") .do(); // After (REM Labs) const results = await rem.recall({ query: "refund policy", namespace: "weaviate-import", limit: 5 }); // Results include content, score, metadata, and tags results.forEach(m => console.log(m.score, m.content.slice(0, 80)));

Step 4: Verify Results

Run side-by-side comparisons on your most common queries to confirm REM returns equivalent or better results:

const testQueries = [ "How do I reset my password?", "What are the pricing tiers?", "When was the last API outage?" ]; for (const q of testQueries) { const results = await rem.recall({ query: q, limit: 3 }); console.log(`\nQuery: "${q}"`); results.forEach((m, i) => { console.log(` ${i + 1}. [${m.score.toFixed(3)}] ${m.content.slice(0, 60)}...`); }); }

Hybrid search built in: Unlike Weaviate where you must choose between nearText, BM25, or hybrid mode per query, REM Labs always runs multi-signal fusion. Every recall query gets vector + full-text + entity graph retrieval automatically.

Upgrade from vector search to AI memory

Free tier. No GraphQL. Multi-signal fusion on every query.

Get Started