| -- Copyright 2026 The Go Authors. All rights reserved. |
| -- Use of this source code is governed by a BSD-style |
| -- license that can be found in the LICENSE file. |
| |
| BEGIN; |
| |
| CREATE EXTENSION IF NOT EXISTS vector; |
| |
| -- halfvec stores 16-bit half-precision floating-point numbers (FP16). |
| -- halfvec(256) specifies a 256-dimensional vector (512 bytes per vector). |
| ALTER TABLE search_documents |
| ADD COLUMN IF NOT EXISTS embedding halfvec(256); |
| |
| -- Create HNSW Index for cosine similarity on packages imported by at least one other package. |
| -- - m (16): Max number of connections/edges per element in each graph layer. |
| -- Higher values increase search accuracy/recall but increase index size and |
| -- build time. |
| -- - ef_construction (64): Size of the dynamic candidate list checked during |
| -- index construction. Higher values build a better graph for higher search |
| -- recall at the cost of slower build time. |
| CREATE INDEX IF NOT EXISTS idx_search_documents_embedding |
| ON search_documents |
| USING hnsw (embedding halfvec_cosine_ops) |
| WITH (m = 16, ef_construction = 64) |
| -- TODO(golang/go#80242) Update this to use imported_by_module_count. |
| WHERE imported_by_count >= 1; |
| |
| END; |