Exa is the most technically sophisticated neural search API for the public internet. Unlike competitors that layer search on top of Google or Bing, Exa built its index and neural search architecture from scratch. Its September 2025 Series B — $85 million from Benchmark, Lightspeed, Nvidia, and Y Combinator — is a strong signal that serious investors believe in the approach.
For searching the public internet, Exa is hard to beat. But there is a fundamentally different search problem it cannot solve, and that is the one most production AI agents actually need.
What Makes Exa Genuinely Good
Exa's architecture starts from a different premise than traditional search. Rather than finding documents that contain keywords, Exa's neural model finds documents that are contextually and semantically similar to high-quality examples of the answer you need.
Specialized indexes. Exa maintains over 15 distinct indexes:
- 1 billion+ people profiles
- 50 million+ company records
- 100 million research papers
- Code repositories, financial filings, news, tweets
This specialization matters. If you are looking for a specific type of content — a research paper on a topic, a company with specific characteristics — Exa's domain-specific indexes perform significantly better than general web search.
Speed profiles. Exa offers two modes: Exa Instant (sub-200ms, single-pass retrieval) and Exa Deep (multi-step research, around 60 seconds). The tiered approach is a sensible tradeoff between latency and comprehensiveness.
Pricing. Neural searches run approximately $7 per 1,000 queries. Deep research searches are approximately $12 per 1,000.
The Architectural Limitation
Here is the core constraint: you cannot add your own URLs to Exa's search index.
Exa searches its index of the public internet. That index is built by Exa. You can filter by domain, date, and content type. You can exclude results. But the content in the index is determined by Exa's crawler — not by you.
This becomes a problem when:
You need to search a specific set of URLs. Say you want to index your competitor's documentation, pricing page, and changelog, then answer semantic queries about them. Exa cannot do this. You can ask Exa to search about your competitor, but it will return whatever its index contains — which may include review articles, blog posts, and third-party analysis rather than the actual competitor pages you specified.
Your content is not well-indexed publicly. Recently published pages, niche documentation, semi-private resources, and low-traffic pages are often underrepresented or absent from Exa's index. If you need consistent retrieval from those sources, you cannot rely on a third-party index.
You need deterministic retrieval. In production AI systems, it matters exactly which documents your agent can access. With Exa, the source set changes as Exa updates its index. With a private corpus, you have complete control over what your agent can and cannot see.
KnowledgeSDK: Private Corpus Semantic Search
KnowledgeSDK is built for the search problem Exa cannot solve: extracting specific URLs into a private knowledge base and running semantic search over them.
The distinction in practice:
Exa: "Find me pages on the public internet that are semantically similar to this query."
KnowledgeSDK: "Search the 50 URLs I extracted last week and find me the content most relevant to this query."
These are different operations with different architectures, outputs, and appropriate use cases.
import KnowledgeSDK from "@knowledgesdk/node";
const client = new KnowledgeSDK({ apiKey: process.env.KNOWLEDGESDK_API_KEY });
// Index your specific URLs — you decide what goes in the corpus
const competitors = [
"https://competitorA.com/pricing",
"https://competitorA.com/docs/api",
"https://competitorB.com/pricing",
"https://competitorB.com/features",
];
for (const url of competitors) {
await client.extract(url);
}
// Semantic search over your private corpus
const results = await client.search(
"which competitors offer a free tier with API access?",
{ limit: 5 }
);
for (const item of results.items) {
console.log(`[${item.score.toFixed(2)}] ${item.sourceUrl}`);
console.log(item.snippet);
}
from knowledgesdk import KnowledgeSDK
client = KnowledgeSDK(api_key=KNOWLEDGESDK_API_KEY)
competitors = [
"https://competitorA.com/pricing",
"https://competitorA.com/docs/api",
"https://competitorB.com/pricing",
"https://competitorB.com/features",
]
for url in competitors:
client.extract(url)
results = client.search(
"which competitors offer a free tier with API access?",
limit=5
)
for item in results.items:
print(f"[{item.score:.2f}] {item.source_url}")
print(item.snippet)
Comparing the Search Results
For the query "which competitors offer a free tier with API access?":
Exa returns: pages from its internet index that discuss free tiers and APIs in the software industry — G2 comparison articles, TechCrunch coverage, review sites, general API guides. These are real web pages, but they may not include the specific competitor pages you care about.
KnowledgeSDK returns: content from the exact URLs you extracted. If competitorA.com/pricing says "Free tier: 1,000 API calls per month," that text will appear in the results. You are searching actual source material you indexed, not a third-party index of the internet.
A Note on Exa Websets
Exa's Websets product provides monitoring capabilities for public-web datasets. It is worth noting the scope: Websets is designed for building and monitoring curated datasets from the public internet — not for registering arbitrary developer-specified URLs for change detection via webhook.
If you need a webhook that fires when https://your-specific-competitor.com/pricing changes, Exa Websets is not the right tool. KnowledgeSDK's webhook system is built for exactly that: register any URL, receive a webhook payload when its content changes.
// Register a specific page for change detection
const webhook = await client.webhooks.create({
url: "https://competitorA.com/pricing",
callbackUrl: "https://your-app.com/webhooks/content-changed",
events: ["content.changed"],
});
console.log(`Monitoring: ${webhook.url}`);
When Exa Wins
Exa is the better choice when:
- You need to discover unknown URLs on the public internet (finding research papers on a topic, finding companies with specific characteristics)
- Your use case benefits from Exa's specialized indexes (people, companies, academic papers, code)
- You need real-time public web search without specifying sources in advance
- You want multi-step research (Exa Deep) across the breadth of the internet
When KnowledgeSDK Wins
KnowledgeSDK is the better choice when:
- You have a defined list of URLs that should be in your search corpus
- You need consistent retrieval from specific sources you have chosen
- You want to monitor specific URLs for content changes via webhook
- Your content is not reliably indexed by third-party search engines
- You need a private knowledge base that only contains content you have approved
Summary
Exa and KnowledgeSDK answer different search questions. The choice depends entirely on what you need your agent to search.
If the answer is "the public internet," use Exa. It is the best neural search API for that problem, with specialized indexes and exceptional accuracy.
If the answer is "a specific set of URLs I have extracted and control," use KnowledgeSDK. Private corpus search requires a different architecture — extraction, private indexing, and search over your stored knowledge — which is what KnowledgeSDK is built for.
Most production AI agents benefit from both: Exa for internet discovery, KnowledgeSDK for curated private corpus retrieval.
npm install @knowledgesdk/node
pip install knowledgesdk