SQL_LIB Telegram 295
🔢 PGVector: векторный поиск прямо в PostgreSQL — гайд

Если ты работаешь с embedding'ами (OpenAI, HuggingFace, LLMs) и хочешь делать семантический поиск в SQL — тебе нужен pgvector. Это расширение позволяет сохранять и сравнивать векторы прямо внутри PostgreSQL.

📦 Установка PGVector (Linux)


git clone --branch v0.8.0 https://github.com/pgvector/pgvector.git
cd pgvector
make
sudo make install


Или просто:
• macOS: brew install pgvector
• Docker: pgvector/pgvector:pg17
• PostgreSQL 13+ (через APT/YUM)

🔌 Подключение расширения в базе


CREATE EXTENSION vector;


После этого ты можешь использовать новый тип данных vector.

🧱 Пример использования

Создаём таблицу:


CREATE TABLE items (
id bigserial PRIMARY KEY,
embedding vector(3)
);


Добавляем данные:


INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]');


Поиск ближайшего вектора:


SELECT * FROM items
ORDER BY embedding <-> '[3,1,2]'
LIMIT 5;


🧠 Операторы сравнения

PGVector поддерживает несколько видов расстояний между векторами:

- <-> — L2 (евклидово расстояние)
- <#> — скалярное произведение
- <=> — косинусное расстояние
- <+> — Manhattan (L1)
- <~> — Хэммингово расстояние (для битовых векторов)
- <%> — Жаккар (для битовых векторов)

Также можно усреднять вектора:


SELECT AVG(embedding) FROM items;


🚀 Индексация для быстрого поиска

HNSW (лучшее качество):


CREATE INDEX ON items USING hnsw (embedding vector_l2_ops);


Параметры можно настраивать:


SET hnsw.ef_search = 40;


#### IVFFlat (быстрее создаётся, но чуть менее точный):


CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 100);
SET ivfflat.probes = 10;


🔍 Проверка версии и обновление


SELECT extversion FROM pg_extension WHERE extname='vector';
ALTER EXTENSION vector UPDATE;


📌 Особенности

- Работает с PostgreSQL 13+
- Поддержка до 2000 измерений
- Расширяемый синтаксис
- Можно использовать DISTINCT, JOIN, GROUP BY, ORDER BY и агрегации
- Подходит для RAG-пайплайнов, NLP и встраивания LLM-поиска в обычные SQL-приложения

🔗 Подробнее

💡 Храни embedding'и прямо в PostgreSQL — и делай семантический поиск без внешних векторных БД.
🔥54👍2



tgoop.com/sql_lib/295
Create:
Last Update:

🔢 PGVector: векторный поиск прямо в PostgreSQL — гайд

Если ты работаешь с embedding'ами (OpenAI, HuggingFace, LLMs) и хочешь делать семантический поиск в SQL — тебе нужен pgvector. Это расширение позволяет сохранять и сравнивать векторы прямо внутри PostgreSQL.

📦 Установка PGVector (Linux)


git clone --branch v0.8.0 https://github.com/pgvector/pgvector.git
cd pgvector
make
sudo make install


Или просто:
• macOS: brew install pgvector
• Docker: pgvector/pgvector:pg17
• PostgreSQL 13+ (через APT/YUM)

🔌 Подключение расширения в базе


CREATE EXTENSION vector;


После этого ты можешь использовать новый тип данных vector.

🧱 Пример использования

Создаём таблицу:


CREATE TABLE items (
id bigserial PRIMARY KEY,
embedding vector(3)
);


Добавляем данные:


INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]');


Поиск ближайшего вектора:


SELECT * FROM items
ORDER BY embedding <-> '[3,1,2]'
LIMIT 5;


🧠 Операторы сравнения

PGVector поддерживает несколько видов расстояний между векторами:

- <-> — L2 (евклидово расстояние)
- <#> — скалярное произведение
- <=> — косинусное расстояние
- <+> — Manhattan (L1)
- <~> — Хэммингово расстояние (для битовых векторов)
- <%> — Жаккар (для битовых векторов)

Также можно усреднять вектора:


SELECT AVG(embedding) FROM items;


🚀 Индексация для быстрого поиска

HNSW (лучшее качество):


CREATE INDEX ON items USING hnsw (embedding vector_l2_ops);


Параметры можно настраивать:


SET hnsw.ef_search = 40;


#### IVFFlat (быстрее создаётся, но чуть менее точный):


CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 100);
SET ivfflat.probes = 10;


🔍 Проверка версии и обновление


SELECT extversion FROM pg_extension WHERE extname='vector';
ALTER EXTENSION vector UPDATE;


📌 Особенности

- Работает с PostgreSQL 13+
- Поддержка до 2000 измерений
- Расширяемый синтаксис
- Можно использовать DISTINCT, JOIN, GROUP BY, ORDER BY и агрегации
- Подходит для RAG-пайплайнов, NLP и встраивания LLM-поиска в обычные SQL-приложения

🔗 Подробнее

💡 Храни embedding'и прямо в PostgreSQL — и делай семантический поиск без внешних векторных БД.

BY Библиотека баз данных


Share with your friend now:
tgoop.com/sql_lib/295

View MORE
Open in Telegram


Telegram News

Date: |

Done! Now you’re the proud owner of a Telegram channel. The next step is to set up and customize your channel. The SUCK Channel on Telegram, with a message saying some content has been removed by the police. Photo: Telegram screenshot. On Tuesday, some local media outlets included Sing Tao Daily cited sources as saying the Hong Kong government was considering restricting access to Telegram. Privacy Commissioner for Personal Data Ada Chung told to the Legislative Council on Monday that government officials, police and lawmakers remain the targets of “doxxing” despite a privacy law amendment last year that criminalised the malicious disclosure of personal information. Developing social channels based on exchanging a single message isn’t exactly new, of course. Back in 2014, the “Yo” app was launched with the sole purpose of enabling users to send each other the greeting “Yo.” Those being doxxed include outgoing Chief Executive Carrie Lam Cheng Yuet-ngor, Chung and police assistant commissioner Joe Chan Tung, who heads police's cyber security and technology crime bureau.
from us


Telegram Библиотека баз данных
FROM American