Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
81 lines
2.4 KiB
Nix
81 lines
2.4 KiB
Nix
{
|
|
buildPgrxExtension,
|
|
cargo-pgrx_0_12_6,
|
|
postgresql,
|
|
fetchFromGitHub,
|
|
lib,
|
|
postgresqlTestExtension,
|
|
}:
|
|
|
|
buildPgrxExtension (finalAttrs: {
|
|
pname = "pgvectorscale";
|
|
version = "0.7.0";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "timescale";
|
|
repo = "pgvectorscale";
|
|
tag = finalAttrs.version;
|
|
hash = "sha256-dy481k2SvyYXwwcsyLZSl3XlhSk9C5+4LfEfciB1DK4=";
|
|
};
|
|
|
|
doCheck = false;
|
|
|
|
cargoHash = "sha256-CeRyDn9VhxfjWFJ1/Z/XvOUQOSnDoHHZAqgfYTeKU0o=";
|
|
cargoPatches = [
|
|
./add-Cargo.lock.patch
|
|
];
|
|
|
|
cargoPgrxFlags = [
|
|
"-p"
|
|
"vectorscale"
|
|
];
|
|
|
|
inherit postgresql;
|
|
cargo-pgrx = cargo-pgrx_0_12_6;
|
|
|
|
passthru.tests.extension = postgresqlTestExtension {
|
|
inherit (finalAttrs) finalPackage;
|
|
withPackages = [ "pgvector" ];
|
|
sql = ''
|
|
CREATE EXTENSION vectorscale CASCADE;
|
|
CREATE TABLE document_embedding (
|
|
id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
|
|
embedding VECTOR(3)
|
|
);
|
|
|
|
INSERT INTO document_embedding (id, embedding) VALUES
|
|
(10, '[1,2,4]'),
|
|
(20, '[1,2,5]');
|
|
|
|
CREATE INDEX document_embedding_idx ON document_embedding
|
|
USING diskann (embedding vector_cosine_ops);
|
|
'';
|
|
asserts = [
|
|
{
|
|
query = "SELECT id FROM document_embedding WHERE embedding <-> '[1,2,3]' = 1";
|
|
expected = "10";
|
|
description = "Expected vector of row with ID=10 to have an euclidean distance from [1,2,3] of 1.";
|
|
}
|
|
{
|
|
query = "SELECT id FROM document_embedding WHERE embedding <-> '[1,2,3]' = 2";
|
|
expected = "20";
|
|
description = "Expected vector of row with ID=20 to have an euclidean distance from [1,2,3] of 2.";
|
|
}
|
|
];
|
|
};
|
|
|
|
meta = {
|
|
# PostgreSQL 18 support issue upstream: https://github.com/timescale/pgvectorscale/issues/249
|
|
# Check after next package update.
|
|
broken =
|
|
lib.warnIf (finalAttrs.version != "0.7.0") "Is postgresql18Packages.pgvectorscale still broken?"
|
|
(lib.versionAtLeast postgresql.version "18");
|
|
homepage = "https://github.com/timescale/pgvectorscale";
|
|
teams = [ lib.teams.flyingcircus ];
|
|
description = "Complement to pgvector for high performance, cost efficient vector search on large workloads";
|
|
license = lib.licenses.postgresql;
|
|
platforms = postgresql.meta.platforms;
|
|
changelog = "https://github.com/timescale/pgvectorscale/releases/tag/${finalAttrs.version}";
|
|
};
|
|
})
|