Предварительное исследование векторной базы данных pgvector
Предварительное исследование векторной базы данных pgvector

Обзор

pgvector — это расширение PostgreSQL с открытым исходным кодом, которое действует как управляющий векторными данными, обрабатывая все: от встраивания хранилища до поиска сходства векторов. В качестве важного вспомогательного средства для больших языковых моделей, таких как большая модель Tencent Hunyuan, он использует векторы для представления данных и находит соответствующие результаты путем измерения сходства между этими векторами. Это выводит скорость и точность получения актуальной информации на новый уровень. Можно сказать, что pgvector очень подходит для сценариев, в которых обрабатываются крупномасштабные данные, и имеет отличную производительность в задачах, требующих корреляционного поиска и обработки многомерных данных.

Процесс использования pgvector подобен созданию эксклюзивного векторизатора данных, шаги просты и понятны. Сначала включите «векторное» расширение PostgreSQL и создайте таблицу данных для хранения векторов. Затем характеристические данные каждого образца можно сохранить в базе данных в векторной форме. После того, как все настроено, вы можете использовать pgvector для выполнения запросов на сходство ко всем вашим векторным данным.

Прелесть pgvector в том, что он не только специализируется на обработке векторных данных, но и предоставляет разработчикам все преимущества PostgreSQL как объектно-реляционной системы баз данных, которая разрабатывалась и оптимизировалась на протяжении 35 лет. Другими словами, pgvector не только сохраняет надежность, устойчивость и производительность PostgreSQL, но также расширяет возможности PostgreSQL за счет эффективной технологии векторного поиска и обработки. Мощные возможности векторной обработки и богатые функции делают pgvector, несомненно, лучшим выбором для обработки векторных данных.

В этой статье в основном показан процесс создания таблицы библиотеки pgvector и использования Python для доступа к измененной таблице библиотеки.

Используйте Docker для создания pgvector

Входитьhttps://hub.docker.com/r/ankane/pgvector,Получить загрузку Docker Команда зеркального отображения изображения.

Язык кода:bash
копировать
docker pull ankane/pgvector

docker run --name pgvector -v $(pwd)/data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=Ваш пароль -p 5432:5432 -d ankane/pgvector

Используйте psql для создания библиотечных таблиц

Язык кода:txt
копировать
psql --help
psqlдаPostgreSQL интерактивный клиентский инструмент.
Как использовать:
  psql [параметры]... [имя базы данных [имя пользователя]]
Распространенные варианты:
  -c, --command=команда       Выполните одну команду (SQL или внутреннюю команду) и завершите
  -d, --dbname=DBNAME      Укажите базу данных для подключения (По умолчанию: «хуйян»)
  -f, --file=имя файла        Выполнить команду из файла и выйти
  -l, --list               Вывести список всех доступных баз данных и выйти.
  -v, --set=, --variable=NAME=VALUE
                           Установите для переменной psql ИМЯ значение ЗНАЧЕНИЕ.
                           (Например, -v ON_ERROR_STOP=1)
  -V, --version            Информация о версии вывода, затем выйдите
  -X, --no-psqlrc          Не читает файл запуска (~/.psqlrc)
  -1 ("one"), --single-transaction
                           Выполнить командный файл как одну транзакцию (если он неинтерактивный)
  -?, --help[=options]     Показать эту помощь,затем выйдите
      --help=commands      Список команд обратной косой черты,затем выйдите
      --help=variables     список специальных переменных,затем выйдите

Варианты ввода и вывода:
  -a, --echo-all           Показать все входные данные из сценария
  -b, --echo-errors        Эхо неудавшихся команд
  -e, --echo-queries       Отображение команд, отправленных на сервер
  -E, --echo-hidden        Показать запросы, созданные внутренними командами
  -L, --log-file=имя файла    Записать журнал сеанса в файл
  -n, --no-readline        Отключить расширенное редактирование командной строки (readline)
  -o, --output=FILENAME    Записывать результаты запроса в файл (или |Трубопровод)
  -q, --quiet              Запуск в тихом режиме (без сообщений, только результаты запроса)
  -s, --single-step        одношаговый режим (подтвердите каждый запрос)
  -S, --single-line        однострочный режим (Только одна строка в строке) SQL Заказ)

Параметры формата вывода :
  -A, --no-align           Использовать режим вывода невыровненной таблицы
      --csv                Режим вывода таблицы CSV (значения, разделенные запятыми)
  -F, --field-separator=STRING
                           Установить разделитель для полей, используемый для неаккуратного вывода (по умолчанию: «|»)
  -H, --html               HTML Режим вывода таблицы
  -P, --pset=переменная[=параметр]   Установите опции для печати переменных в параметрах (см. \pset Заказ)
  -R, --record-separator=STRING
                           Устанавливает символ-разделитель для неаккуратного вывода (по умолчанию: новая строка)
  -t, --tuples-only        Распечатать только запись i
  -T, --table-attr=текст    настраивать HTML Свойства разметки таблицы (например, ширина, поля)
  -x, --expanded           Включить расширенный вывод таблицы
  -z, --field-separator-zero
                           Установите разделитель полей на байт 0 для неаккуратного вывода.
  -0, --record-separator-zero
                           Установите разделитель записей на байт 0 для неаккуратного вывода.

Варианты присоединения:
  -h, --host=имя хоста        Каталог хоста или сокета сервера базы данных (по умолчанию: «локальный интерфейс»)
  -p, --port=порт          Порт сервера базы данных (по умолчанию: «5432»)
  -U, --username=имя пользователя    Укажите имя пользователя базы данных (по умолчанию: «postgres»)
  -w, --no-password        Никогда не запрашивать пароль
  -W, --password           Принудительный запрос пароля (автоматический)

Для получения дополнительной информации введите «\?» (для внутренних команд) в psql или "\help" (для SQLЗаказ),
Или обратитесь к главе psql в документации PostgreSQL.

Сообщайте о постельных клопах<pgsql-bugs@lists.postgresql.org>.
PostgreSQL Дом: <https://www.postgresql.org/>

Войдите в PostgreSQL

поэтому,Используйте следующую команду Войдите в PostgreSQL,

Язык кода:bash
копировать
psql -h localhost -p 5432 -U postgres

Введите пароль для входа в PostgreSQL.

Посмотреть список всех баз данных

Чтобы просмотреть список всех баз данных в текущей базе данных, вы можете использовать следующую команду SQL:

Язык кода:psql
копировать
\l

Выполнение этой команды в командной строке psql отобразит список всех баз данных, включая имя базы данных, владельца, кодировку, описание и другую информацию.

Переключиться на другую базу данных

существовать PostgreSQL середина,хотеть Переключиться на другую базу данных,Вы можете использовать следующее Заказ:

Язык кода:psql
копировать
\c database_name

Это соединит вас с базой данных с именем имя_базы_данных. Если подключение установлено успешно, в командной строке отобразится имя новой базы данных, что указывает на то, что вы успешно переключились на нее.

Создать новую базу данных

хотетьсуществовать PostgreSQL середина Создать новую базу данных,ты Вы можете использовать следующее Заказ:

Язык кода:psql
копировать
CREATE DATABASE database_name;

существоватьэта командасередина,database_name — имя базы данных, которую вы хотите создать. После выполнения этой команды появится новый файл с именем database_name база данных.

Показать список всех таблиц

существовать PostgreSQL в,\д Используется для отображения информации об объектах базы данных. Вы можете запустить его одним из двух способов:

Язык кода:psql
копировать
\d
\dt

Приведенная выше команда отобразит список всех таблиц в текущей базе данных. Он отображает имя таблицы, тип таблицы (например, таблица, представление и т. д.), владельца и другую информацию.

С другой стороны, \dt да \d Подмножество команд, предназначенное для вывода списка всех таблиц в базе данных. Это связано с \d Разница между существованием и \d Также перечислены другие типы объектов базы данных, такие как представления, индексы, последовательности и т. д.

Если вас интересуют только таблицы, использование \dt более интуитивно понятно и конкретно.

Посмотреть структуру таблицы

существовать PostgreSQL в,\д table_name используется для отображения структуры таблицы базы данных.

Язык кода:psql
копировать
\d table_name

Доступ к pgvector с помощью Python sqlalchemy

SQLAlchemy

SQLAlchemy да Python Набор языков программирования ORM структуру, которая обеспечивает всеобъемлющую SQL интерфейс. Его основная цель — помочь существующим разработчикам работать с базовой базой данных, предоставляя при этом мощный и простой в использовании инструмент. Python API。

Пример кода

Язык кода:python
кодКоличество запусков:0
копировать
from sqlalchemy import create_engine, Table, MetaData
from sqlalchemy.dialects.postgresql import array
from sqlalchemy.sql import select

engine = create_engine('postgresql://username:password@localhost/dbname')
metadata = MetaData()

vector_table = Table('vector_table', metadata, autoload_with=engine)

# Insert vectors
with engine.connect() as connection:
    data = {'id': 1, 'vector': array([0.1, 0.2, 0.3, 0.4])}
    connection.execute(vector_table.insert().values(data))

# Query vectors
with engine.connect() as connection:
    query = select([vector_table.c.vector]).where(vector_table.c.id == 1)
    result = connection.execute(query)
    for row in result:
        print(row)

существуют в приведенном выше примере,Мы создали движок SQLAlchemy, включающий базу данных PostgreSQL, с которой можно взаимодействовать. Затем,Определяем таблицу (vector_table),Эта таблица существует и фактически хранится в базе данных.,Содержит наши векторные данные.

затем,Вставьте новый вектор в нашу базу данных существования.,Затем запросите таблицу существования для идентификатора равного 1 вектора.

Обратите внимание, что это только базовый пример, в реальных ситуациях может потребоваться обработка более сложных запросов и операций.

Подвести итог

в общем,pgvector как расширение векторного поиска,Функциональное расширение PostgreSQL нельзя игнорировать. Путем воплощения существования векторного поиска сходства и обработки встраивания и т.д.,Практическая польза, которую оно приносит, вполне заслужена. Являетесь ли вы разработчиком,Также специалист по машинному обучению,Если вы ищете эффективный способ работы с векторными данными,pgvector — вариант, который стоит попробовать.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose