Exa Search Integration
Quick Reference
| Topic | When to Use | Reference | |-------|-------------|-----------| | Search Modes | Choosing between auto, neural, and keyword search | search-modes.md | | Filters | Domain, date, text, and category filtering | filters.md | | Contents | Text extraction, highlights, summaries, livecrawl | contents.md | | SDK Patterns | Python (exa_py) and TypeScript (exa-js) usage | sdk-patterns.md |
Essential Patterns
Basic Search (Python)
from exa_py import Exa
exa = Exa(api_key="your-api-key") # or set EXA_API_KEY env var
results = exa.search_and_contents(
"latest developments in quantum computing",
type="auto",
num_results=10,
text=True,
highlights=True
)
for result in results.results:
print(f"{result.title}: {result.url}")
print(result.text[:500])
Basic Search (TypeScript)
import Exa from "exa-js";
const exa = new Exa(process.env.EXA_API_KEY);
const results = await exa.searchAndContents(
"latest developments in quantum computing",
{
type: "auto",
numResults: 10,
text: true,
highlights: true,
}
);
results.results.forEach((result) => {
console.log(`${result.title}: ${result.url}`);
});
Search with Filters
results = exa.search_and_contents(
"AI startup funding rounds",
type="neural",
num_results=10,
include_domains=["techcrunch.com", "venturebeat.com"],
start_published_date="2024-01-01",
text={"max_characters": 2000},
summary=True
)
Find Similar Links
similar = exa.find_similar_and_contents(
"https://example.com/interesting-article",
num_results=10,
exclude_source_domain=True,
text=True
)
Search Mode Selection
| Mode | When to Use | Notes |
|------|-------------|-------|
| auto | Default for most queries | Exa optimizes between neural/keyword automatically |
| neural | Natural language, conceptual queries | Best for "what is...", "how to...", topic exploration |
| keyword | Exact matches, technical terms, names | Best for specific product names, error codes, proper nouns |
Common Mistakes
- Using
keywordfor conceptual queries - Neural search understands intent better; useautoorneuralfor natural language questions - Not setting
text=True- Search returns URLs only by default; explicitly request content withtext=True - Ignoring
highlights- Usehighlights=Truefor relevant snippets without downloading full page text - Missing API key - Set
EXA_API_KEYenvironment variable or pass explicitly to constructor - Over-filtering initially - Start with broad searches, then add domain/date filters to refine
- Not using
summary- For RAG applications,summary=Trueprovides concise context without full page text - Expecting scores in auto mode - Relevance scores are only returned with
type="neural"; auto mode doesn't include them