# Spin up a pre‑configured PostgreSQL instancedocker run --name vchord-suite \
-e POSTGRES_PASSWORD=postgres \
-p 5432:5432 \
-d tensorchord/vchord-suite:pg17-latest
-- Inside psql
CREATEEXTENSIONpg_tokenizerCASCADE;CREATEEXTENSIONvchord_bm25CASCADE;-- Register the LLMLingua‑2 tokenizer
SELECTcreate_tokenizer('llm_tok',$$model="llmlingua2"$$);CREATETABLEarticles(idSERIALPRIMARYKEY,bodyTEXT,embbm25vector);INSERTINTOarticles(body)VALUES('PostgreSQL is a powerful open‑source database system.'),('BM25 is a ranking function used by search engines.');-- Tokenise each row
UPDATEarticlesSETemb=tokenize(body,'llm_tok');-- Build the BM25 index
CREATEINDEXarticles_emb_bm25ONarticlesUSINGbm25(embbm25_ops);-- Query with relevance ordering
SELECTid,body,emb<&>to_bm25query('articles_emb_bm25',tokenize('open source database','llm_tok'))ASscoreFROMarticlesORDERBYscore-- lower (more negative) = higher relevance
LIMIT10;
-- 1. Create a text analyzer with Unicode segmentation, lowercasing,
-- stop‑word removal, and stemming.
SELECTcreate_text_analyzer('tech_analyzer',$$pre_tokenizer="unicode_segmentation"[[character_filters]]to_lowercase={}[[token_filters]]stopwords="nltk_english"[[token_filters]]stemmer="english_porter2"$$);-- 2. Train a model on your own corpus and set up automatic embedding
SELECTcreate_custom_model_tokenizer_and_trigger(tokenizer_name=>'tech_tok',model_name=>'tech_model',text_analyzer_name=>'tech_analyzer',table_name=>'tickets',source_column=>'issue_text',target_column=>'embedding');-- 3. Insert support tickets; embeddings are generated via trigger
INSERTINTOtickets(issue_text)VALUES('Kubernetes pod fails with ExitCode 137 after OOM kill.'),('Network latency spikes to 250ms during peak hours.');-- 4. Build an index and query as before
CREATEINDEXtickets_emb_bm25ONticketsUSINGbm25(embeddingbm25_ops);SELECTissue_text,embedding<&>to_bm25query('tickets_emb_bm25',tokenize('OOM kill ExitCode 137','tech_tok'))ASscoreFROMticketsORDERBYscoreLIMIT5;