k1 : 단어 빈도의 포화(saturation)를 결정하는 하이퍼파라미터(보통 1.2 ~ 2.0)
단어 빈도가 k' 을 넘어가면 점수가 잘 오르지 않음
b: 문서 길이의 중요도를 반영하는 하이퍼파라미터(보통 0.75)
커질 수록 문서 길이를 많이 반영, 0이면 문서 길이는 미반영
pg-textsearch 확장 설치
!wget https://github.com/timescale/pg_textsearch/releases/download/v1.1.0/pg-textsearch-v1.1.0-pg17-amd64.zip
!unzip pg-textsearch-v1.1.0-pg17-amd64.zip
!sudo dpkg -i pg-textsearch-postgresql-17_1.1.0-1_amd64.deb
!echo"shared_preload_libraries = 'pg_textsearch'" | \
sudo tee -a /etc/postgresql/17/main/postgresql.conf
!service postgresql restart
!sudo -u postgres psql -d searchdb -c "CREATE EXTENSION IF NOT EXISTS pg_textsearch;"
BM25로 검색
BM25 인덱스
%%sql postgresql+psycopg2://colab:colab@localhost:5432/searchdb
CREATE INDEX idx_title_nouns_pg_textsearch ON wikipages
USING bm25 (title_nouns)
WITH (text_config='simple');