
Currrent и запланированные функции:
Этот проект использует Pixi для управления зависимостями и средами.
Если вы находитесь на Linux или MacOS, вы можете установить Pixi, используя следующие команды:
curl -fsSL https://pixi.sh/install.sh | bashЗатем клонируйте репозиторий:
git clone https://github.com/dnth/pgsql-search.git
cd pgsql-searchУстановите проект:
pixi installЭто должно установить все зависимости проекта, включая PostgreSQL, CUDA, Pytorch и PGVector в виртуальную среду.
Кончик
Почему pixi , а не uv ?
В этом проекте мы используем базу данных PostgreSQL, и она не может быть установлен непосредственно через uv или pip . Но PostgreSQL установлен через conda .
Вместо использования conda мы используем pixi для управления окружающей средой и зависимостями. Кроме того, pixi использует uv под капюшоном для вытягивания пакетов Python. Это дает нам скорость uv для пакетов Python и гибкость conda для зависимостей на уровне системы.
Запустите локальный сервер баз данных:
pixi run configure-db Это инициализирует базу данных и запускает сервер. Вы должны увидеть папку с именем mylocal_db в вашем текущем каталоге. Эта папка содержит файлы базы данных.
После того, как база данных настроена, давайте запустим скрипт QuickStart:
pixi run quickstartЭтот скрипт загрузит набор данных с изображениями и подписями, создаст базу данных, вставьте набор данных в базу данных, запустите полный текстовый поиск и распечатайте результаты.
Если все идет хорошо, вы должны увидеть результаты, напечатанные в терминале.
В настоящее время мы поддерживаем только наборы данных об обнимании. Давайте загрузим набор данных с изображениями и подписями.
from pgsql_search . loader import HuggingFaceDatasets
ds = HuggingFaceDatasets ( "UCSC-VLAA/Recap-COCO-30K" ) # Load the dataset
ds . save_images ( "../data/images" ) # Save the images to a local folder
ds = ds . select_columns ([ "image_filepath" , "caption" ]) # Select the columns we want to use ds.dataset - это обнимающийся объект Dataset лица. Вы можете выполнить любые операции, поддерживаемые пакетом datasets .
ds . dataset Dataset({
features: ['image_filepath', 'caption'],
num_rows: 30504
})
Из DS.Dataset мы видим, что у нас есть 30504 строк в наборе данных с 2 столбцами: image_filepath и caption . Теперь мы можем создать базу данных и вставить набор данных в базу данных.
from pgsql_search . database import PostgreSQLDatabase , ColumnType
PostgreSQLDatabase . create_database ( "my_database" )Вставьте набор данных в базу данных:
df = ds . dataset . to_pandas ()
with PostgreSQLDatabase ( "my_database" ) as db :
db . initialize_table ( "image_metadata" )
db . add_column ( "image_filepath" , ColumnType . TEXT , nullable = False )
db . add_column ( "caption" , ColumnType . TEXT , nullable = True )
db . insert_dataframe ( df )После завершения мы можем запустить полный текстовый поиск в базе данных.
from pgsql_search . database import PostgreSQLDatabase
query = "man in a yellow shirt"
with PostgreSQLDatabase ( "my_database" ) as db :
res = db . full_text_search (
query = query ,
table_name = "image_metadata" ,
search_column = "caption" ,
num_results = 10
)Вывод - это пандас данных с результатами и запросом.

Если вы хотите проверить базу данных, вы можете сделать это со следующей командой:
pixi run inspect-dbЭто откроет интерактивный терминал для проверки базы данных.
Если вы хотите остановить сервер базы данных, вы можете сделать это со следующей командой:
pixi run stop-dbИ полностью удалить базу данных:
pixi run remove-dbpixi run -e test pytest