Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchPC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11To find code by both exact identifiers and natural-language descriptions, keep two retrieval paths: full-text search over code and metadata, and vector search over embeddings. Retrieve candidates from each path, then combine their rankings with reciprocal rank fusion (RRF). This guide shows how to shape the data, build the two paths, and evaluate the combined results. Microsoft documents vector indexes and VECTOR_SEARCH as generally available in Azure SQL Database and in preview in SQL Server 2025; code-specific relevance and performance still need to be tested on your repository.
What each search path contributes
| Approach | Useful for | Depends on | Key caution |
|---|---|---|---|
| Full-text search | Character-based terms, including literal identifiers and names you make searchable. | Chosen text fields and full-text indexing. | Validate how fields and tokens behave for your code. SQL Server 2025 also has full-text breaking changes to check during upgrades. |
| Vector search | Approximate nearest neighbors: code chunks whose embeddings are similar to a query embedding. | An embedding model, a vector column, and supported vector-search features. | Results depend on model, chunking, and query behavior; SQL Server 2025 vector indexes and search are preview features. |
| Fused search | A candidate list that can include both literal matches and conceptually similar code. | Both retrieval paths, a fusion step, and an evaluation set. | Combining ranks does not establish relevance; assess the resulting list against real code queries. |
Full-text search operates on character data, while vector search compares embeddings. That makes them complementary rather than interchangeable. Microsoft’s Azure SQL vector similarity sample demonstrates separate BM25/full-text and cosine-similarity retrieval followed by RRF. It is a starting point, not a code-search benchmark or proof that a particular setup will work well on your repository.
As an Amazon Associate I earn from qualifying purchases.
Design a searchable code-chunk record
Store each searchable unit with enough information to retrieve, filter, and display it. The following is an implementation recommendation, not a schema mandated by Microsoft’s sample:
Recommended Free Tools
- Stable chunk ID: identify a chunk across indexing and retrieval operations.
- Repository path and language: show where the result came from and support filters.
- Symbol or function name: retain names as searchable text so users can find exact identifiers.
- Source text: provide the content for full-text indexing and embedding generation.
- Optional branch or version metadata: distinguish results from different code lines or revisions where that matters.
Keep metadata available for result display and filters, and decide which character fields belong in full-text search. Chunk boundaries, generated-file handling, comments, and code normalization can all change what the system retrieves. There is no universal chunk size or normalization recipe established here; test these choices against your repository and queries.
#1 Best Overall
Store embeddings consistently with the code
SQL Server’s VECTOR data type stores vector data in an optimized binary format while exposing it as a JSON array. Each element is a single-precision, four-byte floating-point value. See Microsoft’s Vector Data Type documentation.
Keep the embedding alongside the chunk record or in a linked record keyed by its stable chunk ID. Set the vector dimensionality to match the output from the embedding model, and use the same dimensions when embedding a search query. A mismatch between model output and column definition prevents a consistent search path. The VECTOR_SEARCH documentation describes searching stored vectors using a query vector.
Generate embeddings for chunks and queries
Microsoft’s Azure SQL sample demonstrates an Azure OpenAI embedding path and also offers a Python path using a local sentence-transformers model. These are sample options, not evidence that either model or workflow performs best on source code. Choose a model by evaluating it on your own languages, identifiers, comments, and query types.
For each indexed chunk, record or otherwise track the model and version used, the embedding dimensions, and when the embedding was generated. Apply the same intended model and dimensions to query embeddings. Plan how you will refresh embeddings when source text or the model changes; if that change replaces most vectors, Microsoft advises considering dropping and recreating the vector index after loading the new data.
Rank #2
Embedding generation can happen outside the SQL query path when that fits the system architecture. The important operational requirement is to keep stored chunk text, its embedding, and the model/version used to produce that embedding in sync.
Build the exact-term retrieval path
Use SQL Server or Azure SQL full-text search on selected character fields containing code and relevant names or metadata. Preserve literal identifiers, filenames, symbol names, and other terms that matter to your developers in those fields. This is the path that can surface a result because its searchable text contains the requested term; the vector path serves a different purpose.
Full-text search is designed for character-based data. It is not a guarantee that every programming-language token, punctuation pattern, or identifier will be interpreted as developers expect, so validate representative searches against your chosen fields. Microsoft’s Full-Text Search overview describes the feature. For SQL Server 2025 upgrades, check the documented full-text breaking changes and compatibility implications rather than assuming an older deployment will behave identically.
Build the vector retrieval path
Microsoft documents vector indexes and VECTOR_SEARCH as generally available in Azure SQL Database and preview in SQL Server 2025. On SQL Server 2025, enable PREVIEW_FEATURES before using these preview vector features. Confirm feature status and availability for the specific deployment before implementation; preview availability can change.
Rank #3
Current documented vector-index examples use DiskANN. The documented index supports cosine, dot-product, or Euclidean distance metrics. For latest-version vector indexes, the current approximate-query form uses SELECT TOP (N) WITH APPROXIMATE with VECTOR_SEARCH; the older TOP_N argument is deprecated for those latest indexes. Microsoft’s current latest-version index example calls out a minimum of 100 rows for index creation. Check the CREATE VECTOR INDEX documentation for applicable syntax and requirements.
The following is an illustrative adaptation of the documented query shape, not a tested code-search query. Replace the dimensionality with the model’s output dimensions and confirm support on the target engine:
DECLARE @query_vector VECTOR(1536) = /* embedding produced for the query */;
SELECT TOP (20) WITH APPROXIMATE
c.chunk_id,
c.repository_path,
c.code_text,
v.distance
FROM VECTOR_SEARCH(
TABLE = dbo.CodeChunks AS c,
COLUMN = embedding,
SIMILAR_TO = @query_vector,
METRIC = 'cosine'
) AS v
ORDER BY v.distance;
The value 1536 here is an example dimensionality, not a recommended model size. Choose the vector column and query-vector dimensions to match the embedding model you actually use. Review Microsoft’s VECTOR_SEARCH reference for current syntax and engine support.
Fuse text and vector rankings with RRF
Run full-text retrieval and vector retrieval as distinct operations, each producing a ranked candidate list. Then merge the lists using reciprocal rank fusion. The core idea is to add a reciprocal-rank contribution for each list in which a result appears: a result ranked near the top contributes more than one ranked farther down. Use the same chunk ID to recognize a result that appears in both lists.
Rank #4
Do not add raw full-text and vector scores as though the scales were comparable. RRF uses ranks rather than assuming that scores from different retrieval systems share a scale. Microsoft’s RRF explanation for Azure AI Search describes the algorithm; its product-specific scoring details should not be taken as SQL implementation instructions. For the Azure SQL pattern, use the SQL sample’s separate BM25/full-text and cosine retrieval followed by RRF.
A conceptual fusion step looks like this, assuming the two retrieval operations have already produced ranked lists with a chunk_id and an integer rank:
-- text_results(chunk_id, text_rank)
-- vector_results(chunk_id, vector_rank)
-- @rrf_k is a chosen fusion constant; evaluate its effect for your workload.
SELECT
candidates.chunk_id,
SUM(1.0 / (@rrf_k + candidates.rank_position)) AS rrf_score
FROM (
SELECT chunk_id, text_rank AS rank_position
FROM text_results
UNION ALL
SELECT chunk_id, vector_rank AS rank_position
FROM vector_results
) AS candidates
GROUP BY candidates.chunk_id
ORDER BY rrf_score DESC;
This illustrates rank fusion rather than a complete SQL Server procedure. The value of @rrf_k, the candidate-list depths, and any additional filters are choices to test, not universal defaults established for code search.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsEvaluate against real repository questions
Before choosing a configuration, assemble representative queries and judge which code chunks are relevant. Include exact symbols, error codes, filenames, natural-language descriptions of behavior, and mixed queries that combine a name with an explanation. Use the same relevance judgments to compare full-text-only, vector-only, and fused results.
Best Value
- Recall at a chosen cutoff: whether relevant chunks appear in the first part of the result list.
- Reciprocal rank or nDCG: ranking measures to use if they fit your team’s evaluation process.
- Latency: measure the complete retrieval and fusion path under the conditions that matter to your application.
- Cost: account for embedding generation, storage, indexing, and query execution in your own deployment.
These are recommended evaluation dimensions, not published performance results. No code-specific accuracy, latency, throughput, or cost benchmark is established by the cited material, and no universal model, chunk size, fusion weight, or relevance threshold follows from the sample. Report what you measure on your own corpus before claiming one configuration wins.
Maintain indexes and filtered searches
When queries filter by repository, language, branch, or similar metadata, consider conventional indexes on those filter columns as a complement to the vector index. Microsoft documents traditional indexes as complementary and describes iterative filtering for vector search; review current engine behavior and query plans for your filter pattern.
Use sys.dm_db_vector_indexes to inspect vector-index maintenance state, including graph catch-up information. The DMV reference documents the view. If a large data load replaces most embeddings, Microsoft advises considering index recreation after the load rather than assuming the existing vector index is the right maintenance path.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




