Compare commits

...

5 Commits

Author SHA1 Message Date
Andrew Kane
a6420355c5 Updated FreeBSD package name in readme [skip ci] 2026-07-10 22:17:27 -07:00
Andrew Kane
73356ecfa7 Improved check for VectorArrayInit [skip ci] 2026-07-10 16:30:35 -07:00
Andrew Kane
0e557b1d18 Updated readme [skip ci] 2026-07-10 15:16:36 -07:00
Andrew Kane
769a60884c Updated readme [skip ci] 2026-07-10 14:20:26 -07:00
Andrew Kane
8711840058 Added section on multitenancy [skip ci] 2026-07-10 14:13:13 -07:00
2 changed files with 13 additions and 3 deletions

View File

@@ -465,6 +465,16 @@ If filtering by many different values, consider [partitioning](https://www.postg
CREATE TABLE items (embedding vector(3), category_id int) PARTITION BY LIST(category_id);
```
## Multitenancy
For applications with multiple tenants, sharing an approximate index between tenants means vectors from one tenant can affect recall (and speed) for other tenants.
For tenant isolation, use [list partitioning](https://www.postgresql.org/docs/current/ddl-partitioning.html) or separate tables.
```sql
CREATE TABLE items (customer_id int, embedding vector(3)) PARTITION BY LIST(customer_id);
```
## Iterative Index Scans
With approximate indexes, queries with filtering can return less results since filtering is applied *after* the index is scanned. Starting with 0.8.0, you can enable iterative index scans, which will automatically scan more of the index until enough results are found (or it reaches `hnsw.max_scan_tuples` or `ivfflat.max_probes`).
@@ -1223,7 +1233,7 @@ Note: Replace `18` with your Postgres server version
Install the FreeBSD package with:
```sh
pkg install postgresql17-pgvector
pkg install postgresql18-pgvector
```
or the port with:

View File

@@ -25,8 +25,8 @@ VectorArrayInit(int maxlen, int dimensions, Size itemsize)
{
VectorArray res;
if (maxlen < 1 || dimensions < 1)
elog(ERROR, "safety check failed");
if (maxlen < 1 || dimensions < 1 || itemsize == 0)
elog(ERROR, "cannot create vector array");
/* Ensure items are aligned to prevent UB */
itemsize = MAXALIGN(itemsize);