Convex Agents RAG
Implements Retrieval-Augmented Generation (RAG) patterns to enhance agents with custom knowledge bases. Use this when agents need to search through documents, retrieve context from a knowledge base, or ground responses in specific data.
How do I install this agent skill?
npx skills add https://github.com/sstobo/convex-skills --skill convex-agents-ragIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill implements a standard Retrieval-Augmented Generation (RAG) pattern. The main security concern is a risk of indirect prompt injection where untrusted data from the knowledge base or user queries could influence agent behavior. It also relies on external dependencies from the @convex-dev npm scope.
- Socketpass
No alerts
- Snykwarn
Risk: MEDIUM · No issues
- Runlayerpass
1 file scanned · No issues
What does this agent skill do?
Purpose
Enables agents to search through custom content and knowledge bases to provide accurate, context-grounded responses. RAG combines LLM capabilities with semantic search.
When to Use This Skill
- Agents need to reference a knowledge base or document collection
- Grounding answers in specific data (policies, product docs, etc.)
- Semantic search across custom content
- Building a search + generation system (FAQ, documentation, support)
- Reducing hallucinations by constraining responses to known information
- Managing user-specific or team-specific knowledge namespaces
Setup
Install and configure RAG in your convex.config.ts:
import { defineApp } from "convex/server";
import agent from "@convex-dev/agent/convex.config";
import rag from "@convex-dev/rag/convex.config";
const app = defineApp();
app.use(agent);
app.use(rag);
export default app;
Add Content
Ingest documents into a namespace:
import { rag } from "@convex-dev/rag";
export const addContent = action({
args: { userId: v.string(), key: v.string(), text: v.string() },
handler: async (ctx, { userId, key, text }) => {
const namespace = `user:${userId}`;
await rag.addContent(ctx, components.rag, {
namespace,
key,
text,
filters: { filterNames: [filename] },
});
},
});
Search and Generate
Use RAG with agents:
export const answerWithContext = action({
args: { threadId: v.string(), userId: v.string(), question: v.string() },
handler: async (ctx, { threadId, userId, question }) => {
const { thread } = await myAgent.continueThread(ctx, { threadId });
const context = await rag.search(ctx, components.rag, {
namespace: `user:${userId}`,
query: question,
limit: 10,
});
const augmentedPrompt = `# Context:\n\n${context.text}\n\n# Question:\n\n${question}`;
const result = await thread.generateText({ prompt: augmentedPrompt });
return result.text;
},
});
Key Principles
- Namespaces isolate data: Use
user:userIdorteam:teamIdfor multi-tenant safety - Hybrid search: Combine text and vector search for better results
- Filtering: Use
filterNamesto target specific documents
Next Steps
- See fundamentals for basic agent setup
- See context for advanced context customization
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/sstobo/convex-skills/convex-agents-rag">View Convex Agents RAG on skillZs</a>