How to Choose an Embeddings Model for Enterprise Documentation Search
Your documentation search returns the right document to a keyword query, and then fails the moment a support engineer asks the same question in plain language.
The right embeddings model for enterprise documentation search is the one that performs well on your own content, not the one that tops a public leaderboard: test candidates against your actual runbooks, tables, and acronyms before committing. Sanity Context, the retrieval layer of the AI Content Operating System, makes that testing practical because it keeps embeddings bound to the content they index, so comparing or replacing a model does not force a separate migration project.

Start with your domain, not the leaderboard
Public embedding benchmarks like MTEB rank models on generic web text, academic abstracts, and open question-answering sets. Enterprise documentation looks nothing like that corpus. A model that scores brilliantly on paraphrase detection over news articles can still cluster your incident runbooks poorly, because it has never seen your internal product codenames, your ticket-number formats, or the dense acronym soup that fills a mature knowledge base.
The failure mode is concrete. Ask a general model to embed "P1 escalation path for the billing reconciliation job" and it may anchor on "billing" and "job," burying the escalation runbook under generic finance content. Domain-specific terminology carries most of the retrieval signal in enterprise docs, and that is exactly the signal off-the-shelf models compress away.
The practical test is to build a small, honest evaluation set from real queries your users actually type, fifty to a hundred question-and-answer pairs drawn from support tickets or search logs, and measure recall at your target cut-off on each candidate model against your own content. This is unglamorous and it is the single highest-leverage thing you can do. A model that wins your evaluation set by four points of recall at rank five will outperform the leaderboard champion every day in production.
This maps to the first pillar of the Content Operating System, model your business. When content is structured, you can scope evaluation to the fields that carry meaning, the body of a runbook rather than its changelog, so the model is judged on the text your users actually retrieve against rather than on boilerplate that inflates or deflates the score.
Dimensionality, cost, and the re-indexing tax
Embedding dimensionality is the quiet cost driver nobody budgets for. A 3,072-dimension model stores roughly four times the vector data of a 768-dimension model, which multiplies memory, index size, and query-time compute across every document you hold. For a small knowledge base the difference is noise. For an enterprise corpus of hundreds of thousands of documents it is the difference between a search tier that fits in memory and one that spills to disk and slows every query.
Higher dimensions do not automatically mean better retrieval. Many modern models support dimension truncation, letting you keep the first several hundred dimensions and trade a small, measurable recall loss for a large storage and latency gain. Whether that trade is worth it is, again, an empirical question you answer on your own evaluation set, not a spec-sheet default.
Then there is the re-indexing tax. The moment you change embedding models, every vector you have ever stored is worthless, and you must re-embed the entire corpus. Teams that treat the model as a permanent decision get surprised when a better model ships a year later and the migration means reprocessing every document, reconciling stale vectors, and coordinating a cutover so search does not degrade mid-flight.
Sanity Context takes this weight off the team. Because dataset embeddings are tied to the content in the Content Lake rather than living in a separate vector store, edits propagate within minutes and there is no parallel pipeline to keep synchronized. The model decision stops being a one-way door.
Why the embeddings model is only half the retrieval decision
Even a perfect embeddings model has a blind spot: it retrieves on meaning, and enterprise documentation is full of things that carry no semantic meaning at all. Error codes, SKU numbers, API endpoint names, version strings, and exact product names are tokens a user often types verbatim, and a purely semantic search can miss them because "ERR_4032" is not semantically near anything.
This is why serious documentation retrieval is hybrid: a dense vector search for meaning, blended with a lexical search for exact terms, so "how do I fix ERR_4032" hits both the runbook that explains the error conceptually and the one document that names the code literally. The embeddings model handles recall on paraphrased questions; the keyword layer guarantees you never lose an exact-match query to a fuzzy neighbor.
The architectural question then becomes where the blend happens. In a stitched stack you run the vector search in one system, the keyword search in another, merge the two result sets in application code, and maintain the reconciliation logic yourself. Every schema change or scoring tweak means touching two systems and the glue between them.
Inside Sanity Context the blend is native. A single GROQ query combines text::semanticSimilarity() for dense meaning with a BM25 match() for exact terms, weighted together using score() and boost() so relevance tuning is one query rather than an integration project. The embeddings model you choose plugs into that path; it does not require you to assemble the surrounding search stack to make it useful.
Freshness: the model you pick has to keep up with your content
Enterprise documentation is not a static corpus you embed once and forget. Runbooks get corrected after incidents, product docs update every release, deprecation notices land weekly, and each of those edits changes what the right answer to a query should be. An embeddings strategy that treats indexing as a nightly or weekly batch job guarantees a window where your AI agents confidently retrieve content that is already wrong.
The stakes are highest exactly where staleness is most likely. The document most likely to change, a hotfix runbook during an active incident, is also the one an agent is most likely to be asked about under pressure. If the embedding of that document reflects last week's version, the agent grounds its answer in outdated remediation steps, and the tool that was supposed to reduce risk introduces it.
This is where an embeddings model chosen in isolation runs into an operational wall. The model produces vectors; something else has to notice a document changed, re-embed it, and update the index before the next query arrives. In a bolt-on architecture that something is a pipeline you build and monitor.
Because Sanity Context ties embeddings to content in the Content Lake, an edit in the Studio propagates to the retrievable vector within minutes, with no separate embedding job to trigger or observe. Content Releases let editors stage and review changes to documentation, and the agent instructions that sit alongside it, the same way they stage the website, so freshness is a property of the platform rather than a cron job someone has to remember to fix.
Governance, residency, and the model you are allowed to run
For a regulated enterprise the best embeddings model on your evaluation set can still be the wrong choice, because the constraint is not quality, it is control. Sending internal documentation to a third-party embedding API means your runbooks, security procedures, and unreleased product content transit a vendor's infrastructure, and that is a data governance question your security team will ask before it is a retrieval question your search team can answer.
The questions that decide the shortlist are rarely about recall. Where is the content embedded and stored geographically? Who can see the raw text of an internal document once it enters the retrieval path? Can you demonstrate to an auditor which content an agent was allowed to retrieve, and when? A model that requires shipping every document to an unconstrained external endpoint fails that review no matter how well it ranks.
Governance also extends to the instructions that drive the agent, not just the documents it reads. The prompt that tells an agent how to answer is content, and it should be versioned, reviewed, and staged with the same rigor as a published page rather than buried in application config where no editor can see or correct it.
Sanity's platform is built for that review. Sanity is SOC 2 Type II compliant and GDPR-ready, with regional hosting for data residency and a published sub-processor list, and Studio Workspaces, Roles and Permissions, and Audit logs give you a record of who changed what. Governing agent instructions in the Studio, staged through Content Releases, keeps the behavior of your retrieval inside the editorial loop instead of outside it.
A decision framework you can defend
Put the criteria in the order that actually protects the outcome. First, domain fit measured on your own evaluation set, because a model that does not retrieve your vocabulary well fails at the only job that matters. Second, hybrid compatibility, because pure semantic search loses exact-match queries and enterprise docs are full of them. Third, dimensionality and refresh cost, because those govern what you pay every day and every time you migrate. Fourth, governance and residency, because in a regulated environment they can veto everything above them.
Notice that only the first item is really about the model. The other three are about the system the model lives inside, and that is the reframe this guide has been building toward. Teams spend weeks debating model A versus model B and then drop the winner into a stitched architecture that undoes the advantage, a nightly batch that lets vectors go stale, a separate vector store that drifts from the content, a keyword layer bolted on in application code.
Sanity Context is the AI Content Operating System's answer to the second half of that decision. The model you choose slots into a retrieval path where hybrid search is native in a single GROQ query, embeddings stay fresh because they are tied to the content in the Content Lake, agent instructions are governed in the Studio, and production agents connect through the Sanity Context MCP endpoint. Choose the model on your evaluation set. Then make sure the place you run it does not squander the choice.