
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를 포함한 프로젝트의 모든 종속성을 가상 환경에 설치해야합니다.
팁
uv 아닌 왜 pixi ?
이 프로젝트에서 PostgreSQL 데이터베이스를 사용하고 있으며 uv 또는 pip 통해 직접 설치할 수 없습니다. 그러나 PostgreSQL은 conda 통해 설치할 수 있습니다.
conda 사용하는 대신 pixi 사용하여 환경과 종속성을 관리합니다. 또한 pixi 후드 아래의 uv 사용하여 Python 패키지를 가져옵니다. 이를 통해 파이썬 패키지에 대한 uv 속도와 시스템 수준 의존성에 대한 conda 의 유연성을 제공합니다.
로컬 데이터베이스 서버 시작 :
pixi run configure-db 데이터베이스를 초기화하고 서버를 시작합니다. 현재 디렉토리에 mylocal_db 라는 폴더가 표시됩니다. 이 폴더에는 데이터베이스 파일이 포함되어 있습니다.
데이터베이스가 설정되면 QuickStart 스크립트를 실행하겠습니다.
pixi run quickstart이 스크립트는 이미지 및 캡션이있는 데이터 세트를로드하고 데이터베이스를 작성하고 데이터 세트를 데이터베이스에 삽입 한 다음 전체 텍스트 검색을 실행하고 결과를 인쇄합니다.
모든 것이 잘 진행되면 터미널에 인쇄 된 결과가 표시됩니다.
현재 우리는 Hugging Face 데이터 세트 만 지원합니다. 이미지와 캡션이있는 데이터 세트를로드합시다.
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에서 우리는 데이터 세트에 2 개의 열이있는 30504 행이 있음을 알 수 있습니다 : 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
)출력은 결과 및 쿼리가있는 Pandas 데이터 프레임입니다.

데이터베이스를 검사하려면 다음 명령으로 수행 할 수 있습니다.
pixi run inspect-db이것은 대화식 터미널을 열어 데이터베이스를 검사합니다.
데이터베이스 서버를 중지하려면 다음 명령으로 수행 할 수 있습니다.
pixi run stop-db데이터베이스를 완전히 제거하려면 다음과 같습니다.
pixi run remove-dbpixi run -e test pytest