Skip to main content

Qdrant Collections

semcode stores everything in Qdrant. Collection names are configurable via QDRANT_COLLECTION and QDRANT_COMMITS_COLLECTION (see Configuration).


code_symbols​

One point per parsed symbol, carrying two named vectors:

  • text-dense — cosine distance, HNSW (m=16, ef_construct=128), size determined by the embedding provider (see Dense Vectors)
  • text-sparse — BM25 over code-identifier subword tokens, in-memory sparse index (see Sparse Vectors)

search_code queries both via a Qdrant query_points call with FusionQuery(fusion=RRF) — see Retrieval with RRF.

Indexed payload fields (language, service, symbol_type, chunk_tier, parent_name, file_path) are usable as filters. search_code and find_symbol expose chunk_tier ("method" or "class") directly, so a query can be scoped to just classes or just methods.

The full payload also includes signature, docstring, annotations, package, start_line, end_line, file_hash, indexed_at, and language-specific extras (http_method, http_route, spring_stereotype, lombok_annotations, is_async, uses_memo, …). See Data Model for the full field list.


git_commits​

Git history indexing is a separate, optional pipeline (server/indexer/git_history.py), triggered by the index_history MCP tool or POST /reindex-history. It embeds commit messages and changed file paths. Full unified diffs are stored in the payload and retrievable via the get_commit tool. The number of commits per service is capped by GIT_HISTORY_MAX_COMMITS (default 500).

Each commit is one dense-only vector (cosine, HNSW m=16 / ef_construct=128) — there is no BM25 vector, so search_commits is pure semantic search.

Payload: sha, service, message, author_name, author_email, committed_at, indexed_at, has_diff, diff_truncated, and files (array of changed files with filename, status, additions, deletions, patch). sha, service, author_name, and has_diff are indexed payload fields.


service_registry​

Holds services registered on the fly through POST /reindex with an inline repo. See Dynamic Service Registration.


Resetting​

make qdrant-clean deletes code_symbols and git_commits; make qdrant-dashboard opens the Qdrant UI. Dropping the collections is also how you switch to an embedding provider with a different vector size — see Startup Validation.