mcpField
E
exa-rag

exa-rag

github.com/ejirocodesDevelopment6235 installsUpdated 18w ago
Repository

About exa-rag

exa-rag is a reference skill for developers building web-search and question-answering applications with Exa. It covers integration patterns for LangChain, LlamaIndex, Vercel AI SDK, OpenAI-compatible endpoints, and MCP.

Key features

  1. 01LangChain retriever integration
  2. 02LlamaIndex data source integration
  3. 03Vercel AI SDK search tool
  4. 04OpenAI-compatible endpoint
  5. 05RAG result filtering guidance

Use cases

  1. 01Add web search to a LangChain RAG chain
  2. 02Use Exa in LlamaIndex document Q&A
  3. 03Configure search tools in a Next.js AI app

MCP support

Describes using Exa with Claude MCP and tool-calling integrations.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/ejirocodes/agent-skills --skill exa-rag

After installing, type/exa-ragin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
langchain.md
llamaindex.md
mcp-tools.md
vercel-ai.md

Details

From the project README

Exa RAG Integration

Quick Reference

TopicWhen to UseReference
LangChainBuilding RAG chains with LangChainlangchain.md
LlamaIndexUsing Exa as a LlamaIndex data sourcellamaindex.md
Vercel AI SDKAdding web search to Next.js AI appsvercel-ai.md
MCP & ToolsClaude MCP server, OpenAI tools, function callingmcp-tools.md

Essential Patterns

LangChain Retriever
from langchain_exa import ExaSearchRetriever

retriever = ExaSearchRetriever(
    exa_api_key="your-key",
    k=5,
    highlights=True
)

docs = retriever.invoke("latest AI research papers")
LlamaIndex Reader
from llama_index.readers.web import ExaReader

reader = ExaReader(api_key="your-key")
documents = reader.load_data(
    query="machine learning best practices",
    num_results=10
)
Vercel AI SDK Tool
import { exa } from "@agentic/exa";
import { createOpenAI } from "@ai-sdk/openai";
import { generateText } from "ai";

const result = await generateText({
  model: openai("gpt-4"),
  tools: { search: exa.searchAndContents },
  prompt: "Search for the latest TypeScript features",
});
OpenAI-Compatible Endpoint
from openai import OpenAI

client = OpenAI(
    base_url="https://api.exa.ai/v1",
    api_key="your-exa-key"
)

response = client.chat.completions.create(
    model="exa",
    messages=[{"role": "user", "content": "What are the latest AI trends?"}]
)

Integration Selection

FrameworkBest ForKey Feature
LangChainComplex chains, agentsExaSearchRetriever, tool integration
LlamaIndexDocument indexing, Q&AExaReader, query engines
Vercel AI SDKNext.js apps, streamingTool definitions, edge-ready
OpenAI CompatDrop-in replacementMinimal code changes
Claude MCPClaude Desktop, Claude CodeNative tool calling

Common Mistakes

  1. Not using highlights for RAG - Full text wastes context; use highlights=True for relevant snippets
  2. Missing source attribution - Always include result.url in citations for grounded responses
  3. Ignoring summaries - summary=True provides concise context without full page overhead
  4. Over-fetching results - Start with 3-5 results; more isn't always better for RAG quality
  5. Not filtering domains - Use include_domains to limit to authoritative sources
  6. Skipping date filters - For current events, always add start_published_date to avoid stale info
  7. Forgetting async patterns - Use async retrievers in production for better throughput

Comments

Markdown supported