<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Vchord: Scalable Vector Search for PostgreSQL on Vchord</title>
    <link>https://vchord.pgsty.com/</link>
    <description>Recent content in Vchord: Scalable Vector Search for PostgreSQL on Vchord</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    
    
    
      <lastBuildDate>Mon, 02 Nov 2026 19:35:19 +0800</lastBuildDate>
    
    
      <atom:link href="https://vchord.pgsty.com/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>Cloud Limits</title>
        <link>https://vchord.pgsty.com/cloud/limit/cloud-limit/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/limit/cloud-limit/</guid>
        <description>&lt;p&gt;Learn about the limits and restrictions you should know about your operations on VectorChord Cloud:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vchord.pgsty.com/cloud/pricing/price-plan/#free-tier&#34;&gt;Free Tier&lt;/a&gt;: One account can create only &lt;strong&gt;one&lt;/strong&gt; free tier cluster.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vchord.pgsty.com/cloud/manage/project/&#34;&gt;Project&lt;/a&gt;: One account can belong to maximum &lt;strong&gt;five&lt;/strong&gt; projects.&lt;/li&gt;&#xA;&lt;li&gt;Does not support HA (High Availability) mode yet.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>Cloud Pricing</title>
        <link>https://vchord.pgsty.com/cloud/pricing/price-plan/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/pricing/price-plan/</guid>
        <description>&lt;h2 id=&#34;free-tier&#34;&gt;Free Tier&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In VectorChord Cloud, we provide a free tier that allows you learn and explore fully-managed VectorChord services in a cloud environment. Every user can use the free tier to create &lt;strong&gt;only one&lt;/strong&gt; cluster and store vector data in it. There are some limitations in the free tier:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Shared resources&lt;/li&gt;&#xA;&lt;li&gt;Limited storage for WAL(Write-Ahead Log) and PGData (5Gi)&lt;/li&gt;&#xA;&lt;li&gt;Only support AWS T3 XLarge instance type&lt;/li&gt;&#xA;&lt;li&gt;Capacity of 100k vectors with 1024 dimensions, this is an estimate, and you can also insert 25k vectors with 4096 dimensions.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;a id=&#34;Enterprise&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
      </item>
    <item>
        <title>Configuration</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/admin/configuration/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/admin/configuration/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;Logging&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;logging&#34;&gt;Logging&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;By default, you cannot capture all &lt;code&gt;pgvecto.rs&lt;/code&gt; logs. &lt;code&gt;pgvecto.rs&lt;/code&gt; starts a background worker process for indexing, and it prints logs to standard error. To capture them, you need to set &lt;code&gt;logging_collector&lt;/code&gt; to &lt;code&gt;on&lt;/code&gt;. You can get more information from &lt;a href=&#34;https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOGGING-COLLECTOR&#34;&gt;PostgreSQL document about logging collector&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;You can set &lt;code&gt;logging_collector&lt;/code&gt; to &lt;code&gt;on&lt;/code&gt; with the following command:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-bacc4404-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sh&#34; data-td-line-count=&#34;4&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-bacc4404-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;psql -U postgres -c &lt;span class=&#34;s1&#34;&gt;&amp;#39;ALTER SYSTEM SET logging_collector = on;&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# You need restart the PostgreSQL cluster to take effects.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl restart postgresql.service   &lt;span class=&#34;c1&#34;&gt;# for pgvecto.rs running with systemd&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker restart pgvecto-rs-demo  &lt;span class=&#34;c1&#34;&gt;# for pgvecto.rs running in docker&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;index-configuration&#34;&gt;Index configuration&#xA;&lt;/h2&gt;&#xA;&lt;span class=&#34;td-badge td-badge--info&#34;&gt;since v0.3.0&lt;/span&gt;&#xA;&lt;p&gt;For each index, there are a number of configuration items that are variable. Unlike options, they support real-time modification after the index has been created. These items can be configured by function &lt;code&gt;alter_vector_index&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Connecting with psql</title>
        <link>https://vchord.pgsty.com/cloud/connect/connect-with-psql/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/connect/connect-with-psql/</guid>
        <description>&lt;p&gt;The following instructions require a working installation of &lt;a href=&#34;https://www.postgresql.org/download/&#34;&gt;psql&lt;/a&gt;. The psql client is the native command-line client for Postgres. It provides an interactive session for sending commands to Postgres and running ad-hoc queries. For more information about psql, refer to the &lt;a href=&#34;https://www.postgresql.org/docs/15/app-psql.html&#34;&gt;psql reference&lt;/a&gt;, in the PostgreSQL Documentation.&lt;/p&gt;&#xA;&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;Cluster instance runs Postgres, which means that any Postgres application or standard utility such as psql is compatible with VectorChord Cloud. You can also use Postgres client libraries and drivers to connect. However, please be aware that some older client libraries and drivers, including older psql executables, are built without &lt;a href=&#34;https://en.wikipedia.org/wiki/Server_Name_Indication&#34;&gt;Server Name Indication (SNI)&lt;/a&gt; support and require a workaround.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Contributing to `pgvecto.rs`</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/community/contributing/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/community/contributing/</guid>
        <description>&lt;p&gt;We welcome all kinds of contributions from the open-source community, individuals, and partners. If you&amp;rsquo;re interested in contributing, hopefully, this document makes the process for contributing clear.&lt;/p&gt;&#xA;&lt;p&gt;Contributors and people new to open source alike will find the following guides especially useful:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;👀 &lt;a href=&#34;https://opensource.guide/how-to-contribute/&#34;&gt;How to Contribute to Open Source | Open Source Guides&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;code-of-conduct&#34;&gt;Code of conduct&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;A code of conduct is a document that establishes expectations for behavior for the project&amp;rsquo;s participants. Adopting, and enforcing, a code of conduct can help create a positive social atmosphere for the community.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Subscribe by Adding Credit Card</title>
        <link>https://vchord.pgsty.com/cloud/payment/credit-card/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/payment/credit-card/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-lightbulb&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Tip&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;Billing is for the project, not the user. There are separate invoices for each project, and you must add the payment method separately.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;VectorChord Cloud supports credit card payments. You can add multiple credit cards or remove some of them by clicking &lt;code&gt;Delete&lt;/code&gt;. Already added credit cards will be displayed on the billing page.&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://vchord.pgsty.com/cloud/images/billing_page.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;p&gt;The &lt;code&gt;Add Payment Method&lt;/code&gt; button will take you to Stripe&amp;rsquo;s &lt;code&gt;Add Credit Card page&lt;/code&gt; where we will initiate a credit card pre-authorization request. There is no charge for this request. Once the add request is complete, the new credit card will be available and displayed on the &lt;code&gt;Billing&lt;/code&gt; page.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Development</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/developers/development/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/developers/development/</guid>
        <description>&lt;h2 id=&#34;set-up-development-environment&#34;&gt;Set up development environment&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;You can set up development environment simply using &lt;a href=&#34;https://github.com/tensorchord/envd&#34;&gt;&lt;code&gt;envd&lt;/code&gt;&lt;/a&gt;. It will create a docker container and install all the dependencies for you.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-c05cfecb-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sh&#34; data-td-line-count=&#34;4&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-c05cfecb-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install envd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/tensorchord/pgvecto.rs.git&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; pgvecto.rs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;envd up&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Or you can setup development environment following these steps manually:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Install base dependency.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-c05cfecb-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sh&#34; data-td-line-count=&#34;18&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-c05cfecb-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    bison &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    build-essential &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ccache &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    flex &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    gcc &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    git &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    gnupg &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    libreadline-dev &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    libssl-dev &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    libxml2-dev &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    libxml2-utils &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    libxslt-dev &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    lsb-release &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    pkg-config &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    tzdata &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    xsltproc &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    zlib1g-dev&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;Install &lt;code&gt;clang-16&lt;/code&gt;. Other versions of &lt;code&gt;clang&lt;/code&gt; are not supported.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-c05cfecb-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sh&#34; data-td-line-count=&#34;4&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-c05cfecb-fence-2-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo sh -c &lt;span class=&#34;s1&#34;&gt;&amp;#39;echo &amp;#34;deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-16 main&amp;#34; &amp;gt;&amp;gt; /etc/apt/sources.list&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget --quiet -O - https://apt.llvm.org/llvm-snapshot.gpg.key &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo apt-key add -&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -y --no-install-recommends clang-16&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;Install Rust. Do not install &lt;code&gt;rustc&lt;/code&gt; using a package manager.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-c05cfecb-fence-3&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sh&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-c05cfecb-fence-3-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl --proto &lt;span class=&#34;s1&#34;&gt;&amp;#39;=https&amp;#39;&lt;/span&gt; --tlsv1.2 -sSf https://sh.rustup.rs &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;ol start=&#34;4&#34;&gt;&#xA;&lt;li&gt;Clone the Repository.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-c05cfecb-fence-4&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sh&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-c05cfecb-fence-4-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/tensorchord/pgvecto.rs.git&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; pgvecto.rs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;ol start=&#34;5&#34;&gt;&#xA;&lt;li&gt;Install &lt;code&gt;cargo-pgrx&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-c05cfecb-fence-5&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sh&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-c05cfecb-fence-5-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo install cargo-pgrx --version &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;grep -o &lt;span class=&#34;s1&#34;&gt;&amp;#39;pgrx = { version = &amp;#34;=[^&amp;#34;]*&amp;#39;&lt;/span&gt; Cargo.toml &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; cut -d &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; -f 4&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo pgrx init&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;code&gt;cargo-pgrx&lt;/code&gt; is a helpful tool to develop a PostgreSQL extension. You can read the document in &lt;a href=&#34;https://docs.rs/crate/cargo-pgrx/latest&#34;&gt;https://docs.rs/crate/cargo-pgrx/latest&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Leveraging 3 Billion PostgreSQL Vectors: Earth Genome&#39;s Earth Index &amp; VectorChord for Planetary Protection</title>
        <link>https://vchord.pgsty.com/docs/customer-stories/earthgenome/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/customer-stories/earthgenome/</guid>
        <description>&lt;p&gt;Monitoring the health of our planet is one of the most critical challenges of our time. Our planet faces immense environmental pressures, and understanding these changes requires sifting through an unimaginable amount of satellite data – petabytes of pixels captured constantly. From tracking deforestation in the Amazon to identifying illegal mining operations in remote regions or monitoring agricultural impacts on sensitive ecosystems, turning this data into actionable intelligence is paramount.&lt;/p&gt;</description>
      </item>
    <item>
        <title>General FAQ</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/faqs/general/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/faqs/general/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;We strongly suggest you explore our new &lt;a href=&#34;https://github.com/pgsty/vchord&#34;&gt;VectorChord&lt;/a&gt; implementation, offering enhanced stability and performance. Users are advised to transition to VectorChord. Refer to the &lt;a href=&#34;https://vchord.pgsty.com/docs/admin/migration/&#34;&gt;migration guide&lt;/a&gt; for assistance.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h2 id=&#34;the-vector-type-or-operator-class-is-not-found&#34;&gt;The vector type or operator class is not found&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In most cases, this is due to a missing schema search path or a lack of permissions.&lt;/p&gt;&#xA;&lt;p&gt;Please go through this checklist:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Run &lt;code&gt;\dx&lt;/code&gt; with &lt;code&gt;psql&lt;/code&gt; or &lt;code&gt;SELECT * FROM pg_extension;&lt;/code&gt; and check if the extension exists.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-eff45029-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-eff45029-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;postgres&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;# \dx&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                                    List of installed extensions&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Name   &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;    Version    &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;   Schema   &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;                                         Description                                          &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---------+---------------+------------+----------------------------------------------------------------------------------------------&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; vectors &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; 0.3.0         &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; vectors    &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; vectors: Vector database plugin &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; Postgres, written in Rust, specifically designed &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; LLM&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;If not, install it with &lt;code&gt;CREATE EXTENSION vectors;&lt;/code&gt;&lt;/p&gt;</description>
      </item>
    <item>
        <title>Half-Precision Vector: `vecf16`</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/reference/vector-types/vecf16/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/reference/vector-types/vecf16/</guid>
        <description>&lt;p&gt;Stored as a half-precision number format, &lt;code&gt;vecf16&lt;/code&gt; takes advantage of the 16-bit float, which uses half the memory and bandwidth compared to &lt;code&gt;vector&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s an example of creating a table with a vecf16 column and inserting values:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-28b05532-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;6&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-28b05532-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TABLE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bigserial&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;PRIMARY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vecf16&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NOT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NULL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;INSERT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;INTO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;VALUES&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;[0.1, 0.2, 0]&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;[0, 0.1, 0.2]&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Index can be created on &lt;code&gt;vecf16&lt;/code&gt; type as well.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Hybrid search with Postgres Native BM25 and VectorChord</title>
        <link>https://vchord.pgsty.com/docs/use-case/hybrid-search/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/use-case/hybrid-search/</guid>
        <description>&lt;p&gt;In the era of RAG (Retrieval-Augmented Generation), efficiently retrieving relevant data from vast datasets is crucial for businesses and developers. Traditional keyword-based retrieval methods, such as those utilizing &lt;strong&gt;BM25&lt;/strong&gt; as a scoring mechanism, excel in ranking documents based on term frequency and exact keyword matches. This makes them highly effective for structured queries and keyword-heavy content. However, they struggle with understanding synonyms, contextual nuances, and semantic intent. Conversely, vector-based retrieval captures deep semantic meaning, enabling better generalization across varied queries but sometimes sacrificing precision in exact keyword matches. Hybrid Search bridges this gap by combining BM25’s precision with vector search’s contextual understanding, delivering faster, more accurate, and semantically aware results.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Hybrid Search</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/use-case/hybrid-search/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/use-case/hybrid-search/</guid>
        <description>&lt;p&gt;We will show you how to use &lt;code&gt;pgvecto.rs&lt;/code&gt; to implement hybrid search in this section.&lt;/p&gt;&#xA;&lt;h2 id=&#34;vector-search-and-full-text-search&#34;&gt;Vector Search and Full Text Search&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Postgres provides &lt;a href=&#34;https://www.postgresql.org/docs/current/textsearch-intro.html&#34;&gt;full text search&lt;/a&gt;, based on &lt;a href=&#34;https://www.postgresql.org/docs/current/textsearch-intro.html#TEXTSEARCH-MATCHING&#34;&gt;the match operator &lt;code&gt;@@&lt;/code&gt;&lt;/a&gt;. It returns true if a &lt;code&gt;tsvector&lt;/code&gt; (document) matches a &lt;code&gt;tsquery&lt;/code&gt; (query). It doesn&amp;rsquo;t matter &lt;strong&gt;which data type is written first&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-4e457930-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;9&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-4e457930-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;a fat cat sat on a mat and ate a fat rat&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tsvector&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;@@&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;cat &amp;amp; rat&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tsquery&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;column&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;----------&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;cat &amp;amp; rat&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tsquery&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;@@&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;a fat cat sat on a mat and ate a fat rat&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tsvector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;column&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;----------&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-callout td-callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-lightbulb&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Tip&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;As the above example suggests, a &lt;code&gt;tsquery&lt;/code&gt; is not just raw text, any more than a &lt;code&gt;tsvector&lt;/code&gt; is. A &lt;code&gt;tsquery&lt;/code&gt; contains search terms, which must be already-normalized lexemes, and may combine multiple terms using &lt;a href=&#34;https://www.postgresql.org/docs/current/datatype-textsearch.html#DATATYPE-TSQUERY&#34;&gt;AND, OR, NOT, and FOLLOWED BY operators&lt;/a&gt;. In this example, the &lt;code&gt;tsquery&lt;/code&gt; &lt;code&gt;&#39;cat &amp;amp; rat&#39;&lt;/code&gt; matches the &lt;code&gt;tsvector&lt;/code&gt; &lt;code&gt;&#39;a fat cat sat on a mat and ate a fat rat&#39;&lt;/code&gt; because it contains both the terms &lt;code&gt;&#39;cat&#39;&lt;/code&gt; and &lt;code&gt;&#39;rat&#39;&lt;/code&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Indexing</title>
        <link>https://vchord.pgsty.com/docs/usage/indexing/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/usage/indexing/</guid>
        <description>&lt;p&gt;VectorChord&amp;rsquo;s index type &lt;code&gt;vchordrq&lt;/code&gt; divides vectors into lists and searches only a subset of lists closest to the query vector. It provides fast build time and low memory consumption, while delivering &lt;a href=&#34;https://vchord.pgsty.com/blog/post/vectorchord-store-400k-vectors-for-1-in-postgresql/#ivf-vs-hnsw&#34;&gt;significantly better performance&lt;/a&gt; than both &lt;code&gt;hnsw&lt;/code&gt; and &lt;code&gt;ivfflat&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s start by creating a table named &lt;code&gt;items&lt;/code&gt; with an &lt;code&gt;embedding&lt;/code&gt; column of type &lt;code&gt;vector(n)&lt;/code&gt;, and then populate it with sample data.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-eedc92b2-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-eedc92b2-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TABLE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bigserial&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;PRIMARY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;INSERT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;INTO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;ARRAY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;random&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;random&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;random&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()]::&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;real&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;generate_series&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;To create a &lt;code&gt;vchordrq&lt;/code&gt; index, you can use the following SQL.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Indexing</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/usage/indexing/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/usage/indexing/</guid>
        <description>&lt;p&gt;Indexing is the process of building a data structure that allows for efficient search. &lt;code&gt;pgvecto.rs&lt;/code&gt; supports three indexing algorithms: brute force (flat), IVF, and HNSW. The default algorithm is HNSW.&lt;/p&gt;&#xA;&lt;p&gt;To construct an index for vectors, first create a table named &lt;code&gt;items&lt;/code&gt; with a column named &lt;code&gt;embedding&lt;/code&gt; of type &lt;code&gt;vector(n)&lt;/code&gt;. Then, populate the table with generated data.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-550e0e5e-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-550e0e5e-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TABLE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;INSERT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;INTO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;ARRAY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;random&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;random&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;random&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()]::&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;real&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;generate_series&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-callout td-callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-lightbulb&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Tip&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;&lt;code&gt;vector&lt;/code&gt; is the suitable data type for most situations. &lt;code&gt;pgvecto.rs&lt;/code&gt; also supports other specific &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/reference/vector-types/&#34;&gt;vector types&lt;/a&gt;, including:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/reference/vector-types/vecf16/&#34;&gt;Half-Precision Vector&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/reference/vector-types/veci8/&#34;&gt;8-Bit Integer Vector&lt;/a&gt; &lt;span class=&#34;td-badge td-badge--info&#34;&gt;since v0.3.0&lt;/span&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/reference/vector-types/svector/&#34;&gt;Sparse Vector&lt;/a&gt; &lt;span class=&#34;td-badge td-badge--info&#34;&gt;since v0.3.0&lt;/span&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/reference/vector-types/bvector/&#34;&gt;Binary Vector&lt;/a&gt; &lt;span class=&#34;td-badge td-badge--info&#34;&gt;since v0.3.0&lt;/span&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Indexing &amp; Maintenance</title>
        <link>https://vchord.pgsty.com/bm25/usage/indexing/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/bm25/usage/indexing/</guid>
        <description>&lt;p&gt;&lt;code&gt;vchord_bm25&lt;/code&gt; provides the &lt;code&gt;bm25&lt;/code&gt; index access method (&lt;code&gt;CREATE ACCESS METHOD bm25 TYPE INDEX HANDLER _bm25_amhandler&lt;/code&gt;) and the &lt;code&gt;bm25_ops&lt;/code&gt; operator class.&lt;/p&gt;&#xA;&lt;h2 id=&#34;creating-a-bm25-index&#34;&gt;Creating a &lt;code&gt;bm25&lt;/code&gt; Index&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;stable-releases-v01--v03-bm25vector&#34;&gt;Stable Releases (&lt;code&gt;v0.1&lt;/code&gt; – &lt;code&gt;v0.3&lt;/code&gt;, &lt;code&gt;bm25vector&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-8a06cbd2-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-8a06cbd2-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;INDEX&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;documents_embedding_bm25&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;documents&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;USING&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25_ops&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;next-gen-main-branch-tsvector&#34;&gt;Next-Gen &lt;code&gt;main&lt;/code&gt; Branch (&lt;code&gt;tsvector&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;In the &lt;code&gt;main&lt;/code&gt; branch, &lt;code&gt;bm25_ops&lt;/code&gt; operates on &lt;code&gt;tsvector&lt;/code&gt; and supports index-level storage parameters (&lt;code&gt;options&lt;/code&gt;, &lt;code&gt;limit&lt;/code&gt;, and &lt;code&gt;prefilter&lt;/code&gt;):&lt;/p&gt;</description>
      </item>
    <item>
        <title>LangChain</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/integration/langchain/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/integration/langchain/</guid>
        <description>&lt;p&gt;This document describes the LangChain integration.&lt;/p&gt;&#xA;&lt;p&gt;LangChain is a framework for developing applications powered by language models. It is a set of tools that allows you to fine-tune, deploy, and use language models in production.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;pgvecto.rs&lt;/code&gt; provides a LangChain integration that allows you to retrieve the most similar vectors in LangChain.&lt;/p&gt;&#xA;&lt;h2 id=&#34;install-dependencies&#34;&gt;Install dependencies&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Some dependencies are required to use the LangChain integration:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-abbb9613-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sh&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-abbb9613-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install langchain langchain-openai pgvecto-rs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;You could start the postgres instance with &lt;code&gt;pgvecto.rs&lt;/code&gt; extension in a docker container:&lt;/p&gt;</description>
      </item>
    <item>
        <title>License</title>
        <link>https://vchord.pgsty.com/about/license/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/about/license/</guid>
        <description>&lt;h2 id=&#34;software-license-pgstyvchord--pgstyvchord_bm25&#34;&gt;Software License (&lt;code&gt;pgsty/vchord&lt;/code&gt; &amp;amp; &lt;code&gt;pgsty/vchord_bm25&lt;/code&gt;)&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/pgsty/vchord&#34;&gt;&lt;code&gt;pgsty/vchord&lt;/code&gt;&lt;/a&gt; and &lt;a href=&#34;https://github.com/pgsty/vchord_bm25&#34;&gt;&lt;code&gt;pgsty/vchord_bm25&lt;/code&gt;&lt;/a&gt; are licensed under the &lt;strong&gt;&lt;a href=&#34;https://www.gnu.org/licenses/agpl-3.0.html&#34;&gt;GNU Affero General Public License v3.0 (&lt;code&gt;AGPL-3.0-only&lt;/code&gt;)&lt;/a&gt;&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/pgsty/vchord/blob/main/LICENSE&#34;&gt;&lt;code&gt;pgsty/vchord&lt;/code&gt; &lt;code&gt;LICENSE&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/pgsty/vchord_bm25/blob/main/LICENSE&#34;&gt;&lt;code&gt;pgsty/vchord_bm25&lt;/code&gt; &lt;code&gt;LICENSE&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;software-license-pgstypg_tokenizer&#34;&gt;Software License (&lt;code&gt;pgsty/pg_tokenizer&lt;/code&gt;)&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/pgsty/pg_tokenizer&#34;&gt;&lt;code&gt;pgsty/pg_tokenizer&lt;/code&gt;&lt;/a&gt; is licensed under the &lt;strong&gt;&lt;a href=&#34;https://www.apache.org/licenses/LICENSE-2.0&#34;&gt;Apache License 2.0 (&lt;code&gt;Apache-2.0&lt;/code&gt;)&lt;/a&gt;&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/pgsty/pg_tokenizer/blob/main/LICENSE&#34;&gt;&lt;code&gt;pgsty/pg_tokenizer&lt;/code&gt; &lt;code&gt;LICENSE&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;documentation-license-vchordpgstycom&#34;&gt;Documentation License (&lt;code&gt;vchord.pgsty.com&lt;/code&gt;)&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The documentation and site adaptations in &lt;a href=&#34;https://github.com/pgsty/vchord.pgsty.com&#34;&gt;&lt;code&gt;pgsty/vchord.pgsty.com&lt;/code&gt;&lt;/a&gt; are licensed under the &lt;strong&gt;&lt;a href=&#34;https://creativecommons.org/licenses/by/4.0/&#34;&gt;Creative Commons Attribution 4.0 International License (&lt;code&gt;CC-BY-4.0&lt;/code&gt;)&lt;/a&gt;&lt;/strong&gt;, with upstream materials adapted from &lt;a href=&#34;https://github.com/tensorchord/pgvecto.rs-docs&#34;&gt;&lt;code&gt;tensorchord/pgvecto.rs-docs&lt;/code&gt;&lt;/a&gt; and &lt;a href=&#34;https://blog.vectorchord.ai/&#34;&gt;&lt;code&gt;blog.vectorchord.ai&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Migration</title>
        <link>https://vchord.pgsty.com/docs/admin/migration/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/admin/migration/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;outline-23&#34;&gt;outline: [2,3]&#xA;&lt;/h2&gt;&#xA;&lt;h1 id=&#34;vectorchord-migration-overview&#34;&gt;VectorChord Migration Overview&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a id=&#34;from-pgvecto-rs&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;from-pgvectors&#34;&gt;From PGVecto.rs&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Most of VectorChord&amp;rsquo;s vector types are supported by &lt;code&gt;pgvector&lt;/code&gt;.&#xA;Therefore, migrating from PGVecto.rs to VectorChord is a simple inversion of &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/admin/migration/&#34;&gt;migrating from pgvector to PGVecto.rs&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;td-callout td-callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-lightbulb&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Tip&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;We provide migration image &lt;a href=&#34;https://hub.docker.com/r/modelzai/pgvectors-vchord/tags&#34;&gt;modelzai/pgvectors-vchord&lt;/a&gt; for pgvecto.rs to VectorChord and vice versa.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;&lt;a id=&#34;Prerequisites&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;prerequisites&#34;&gt;Prerequisites&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s suppose that you have a table with vector data, and the extension &lt;code&gt;PGVecto.rs&lt;/code&gt; installed. A simple example would be:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Monitoring</title>
        <link>https://vchord.pgsty.com/cloud/monitoring/monitoring/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/monitoring/monitoring/</guid>
        <description>&lt;p&gt;The VectorChord Cloud provides several graphs for monitoring system and database metrics. You can access the &lt;strong&gt;Metrics&lt;/strong&gt; dashboard from the cluster details in the VectorChord Cloud Console. Observable metrics include:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vchord.pgsty.com/cloud/monitoring/monitoring/#storage-usage&#34;&gt;Storage Usage&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vchord.pgsty.com/cloud/monitoring/monitoring/#ram&#34;&gt;RAM&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vchord.pgsty.com/cloud/monitoring/monitoring/#cpu&#34;&gt;CPU&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vchord.pgsty.com/cloud/monitoring/monitoring/#vector&#34;&gt;Index&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;storage-usage&#34;&gt;Storage Usage&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This graph shows the total and usage of the storage of Postgres instance.&#xA;&lt;img src=&#34;https://vchord.pgsty.com/cloud/images/storage-usage.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;RAM&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;ram&#34;&gt;RAM&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This graph shows the average memory usage of the Postgres instance, the unit is in MB.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Overview</title>
        <link>https://vchord.pgsty.com/bm25/getting-started/overview/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/bm25/getting-started/overview/</guid>
        <description>&lt;p&gt;PostgreSQL includes built-in full-text search via &lt;code&gt;tsvector&lt;/code&gt;, &lt;code&gt;tsquery&lt;/code&gt;, &lt;code&gt;ts_rank&lt;/code&gt;, and &lt;code&gt;GIN&lt;/code&gt; indexes. While effective for boolean keyword matching (&lt;code&gt;@@&lt;/code&gt;), PostgreSQL&amp;rsquo;s built-in ranking has two structural limitations for modern search and Retrieval-Augmented Generation (RAG) workloads:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Suboptimal Ranking Formula (&lt;code&gt;ts_rank&lt;/code&gt;)&lt;/strong&gt;: PostgreSQL&amp;rsquo;s &lt;code&gt;ts_rank&lt;/code&gt; and &lt;code&gt;ts_rank_cd&lt;/code&gt; do not track corpus-wide &lt;strong&gt;Inverse Document Frequency (IDF)&lt;/strong&gt; or &lt;strong&gt;Average Document Length (&lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mtext&gt;avgdl&lt;/mtext&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;\text{avgdl}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.8889em;vertical-align:-0.1944em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord text&#34;&gt;&lt;span class=&#34;mord&#34;&gt;avgdl&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;)&lt;/strong&gt; across the index. Common words are weighted the same as rare, high-signal terms, and term frequency is not properly saturated.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Exhaustive Index Scans on &lt;code&gt;ORDER BY ... LIMIT K&lt;/code&gt;&lt;/strong&gt;: A PostgreSQL &lt;code&gt;GIN&lt;/code&gt; index only accelerates boolean matching (&lt;code&gt;WHERE tsv @@ tsquery&lt;/code&gt;). To return the Top-10 highest-ranked documents, PostgreSQL must fetch &lt;strong&gt;every&lt;/strong&gt; matching row from the heap, compute &lt;code&gt;ts_rank&lt;/code&gt; for all of them, and sort the entire result set.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;how-vectorchord-bm25-solves-both-problems&#34;&gt;How VectorChord-BM25 Solves Both Problems&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;VectorChord-BM25 (&lt;code&gt;vchord_bm25&lt;/code&gt;)&lt;/strong&gt; introduces a dedicated PostgreSQL index access method (&lt;code&gt;USING bm25&lt;/code&gt;) and sparse BM25 scoring operator (&lt;code&gt;&amp;lt;&amp;amp;&amp;gt;&lt;/code&gt;) specifically engineered for Top-K lexical retrieval:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Overview of the cloud object hierarchy</title>
        <link>https://vchord.pgsty.com/cloud/manage/overview/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/manage/overview/</guid>
        <description>&lt;p&gt;Managing your VectorChord Cloud project requires an understanding of the object hierarchy. The following diagram shows how objects in cloud are related. See below for a description of each object.&#xA;&lt;img src=&#34;https://vchord.pgsty.com/cloud/images/cloud_object_hierarchy.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;vectorchord-cloud-account&#34;&gt;VectorChord Cloud Account&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This is the account you used to sign up with VectorChord Cloud. Now supports signing up with an GitHub account.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;Projects&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;projects&#34;&gt;Projects&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;A project is the top-level object in the hierarchy. It is a container for all clusters in the project and billing information. For more information, see &lt;a href=&#34;https://vchord.pgsty.com/cloud/manage/project/&#34;&gt;Projects&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Overview</title>
        <link>https://vchord.pgsty.com/docs/getting-started/overview/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/getting-started/overview/</guid>
        <description>&lt;p&gt;&lt;code&gt;vchord&lt;/code&gt; is a PostgreSQL extension designed for scalable, high-performance, and disk-efficient vector similarity search.&lt;/p&gt;&#xA;&lt;p&gt;With &lt;code&gt;vchord&lt;/code&gt;, you can store 400,000 vectors for just $1, enabling significant savings: 6x more vectors compared to Pinecone&amp;rsquo;s optimized storage and 26x more than pgvector/pgvecto.rs for the same price&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;. For further insights, check out our &lt;a href=&#34;https://vchord.pgsty.com/blog/post/vectorchord-store-400k-vectors-for-1-in-postgresql/&#34;&gt;launch blog post&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;Features&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;features&#34;&gt;Features&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;vchord&lt;/code&gt; introduces remarkable enhancements over pgvecto.rs and pgvector:&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;⚡ Enhanced Performance&lt;/strong&gt;: Delivering optimized operations with up to 5x faster queries, 16x higher insert throughput, and 16x quicker&lt;sup id=&#34;fnref1:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; index building compared to pgvector&amp;rsquo;s HNSW implementation.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Overview</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/getting-started/overview/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/getting-started/overview/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;We strongly suggest you explore our new &lt;a href=&#34;https://github.com/pgsty/vchord&#34;&gt;VectorChord&lt;/a&gt; implementation, offering enhanced stability and performance. Users are advised to transition to VectorChord. Refer to the &lt;a href=&#34;https://vchord.pgsty.com/docs/admin/migration/&#34;&gt;migration guide&lt;/a&gt; for assistance.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;An introduction to the &lt;code&gt;pgvecto.rs&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;what-is-pgvecto-rs&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-is-pgvectors&#34;&gt;What is &lt;code&gt;pgvecto.rs&lt;/code&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;pgvecto.rs&lt;/code&gt; is a Postgres extension that provides vector similarity search functions. It is written in Rust and based on &lt;a href=&#34;https://github.com/tcdi/pgrx&#34;&gt;pgrx&lt;/a&gt;. It is currently in the beta status, we invite you to try it out in production and provide us with feedback. Read more at &lt;a href=&#34;https://vchord.pgsty.com/blog/release/pgvectors-02-unifying-relational-queries-and-vector-search-in-postgresql/&#34;&gt;📝our launch blog&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Price Benchmark</title>
        <link>https://vchord.pgsty.com/docs/benchmark/price/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/benchmark/price/</guid>
        <description>&lt;p&gt;Using VectorChord, you can achieve a QPS of 131 with 0.95 precision on 100 million 768-dimensional vectors for the top 10 queries. This setup costs only $250 monthly and can be hosted on a single machine. If you are interested in the details of our implementation, please refer to our blog &lt;a href=&#34;https://vchord.pgsty.com/blog/post/vectorchord-store-400k-vectors-for-1-in-postgresql/&#34;&gt;VectorChord: Store 400k Vectors for $1 in PostgreSQL&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;This means you can store 400k vectors for only $1, allowing you to save significantly: 6x more vectors compared to Pinecone (storage optimized instance) and 26x more than pgvector/pgvecto.rs for the same price.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Schema</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/reference/schema/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/reference/schema/</guid>
        <description>&lt;p&gt;Here is the schema provided by &lt;code&gt;pgvecto.rs&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;list-of-data-types&#34;&gt;List of data types&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Name&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;vector, scalar type of which is &lt;code&gt;binary32&lt;/code&gt;  defined in IEEE 754-2008&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;vector, scalar type of which is &lt;code&gt;binary16&lt;/code&gt;  defined in IEEE 754-2008&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;vector, scalar type of which is &lt;code&gt;8-bit Integer&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;sparse vector, scalar type of which is &lt;code&gt;binary32&lt;/code&gt;  defined in IEEE 754-2008&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;binary vector, a fixed-length bit string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vector_index_stat&lt;/td&gt;&#xA;      &lt;td&gt;a composite type representing vector index statistics&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;list-of-operators&#34;&gt;List of operators&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Name&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Left arg type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Right arg type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Result type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;+&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;element-wise arithmetic&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;+&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;element-wise arithmetic&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;+&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;element-wise arithmetic&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;+&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;element-wise arithmetic&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;-&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;element-wise arithmetic&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;-&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;element-wise arithmetic&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;-&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;element-wise arithmetic&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;-&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;element-wise arithmetic&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;amp;&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;element-wise logical AND&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;|&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;element-wise logical OR&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;^&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;element-wise logical XOR&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;=&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;=&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;=&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;=&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;=&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;=&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;=&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;=&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;=&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;=&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;gt;=&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;gt;=&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;gt;=&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;gt;=&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;gt;=&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;boolean&lt;/td&gt;&#xA;      &lt;td&gt;dictionary order comparison&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;-&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;real&lt;/td&gt;&#xA;      &lt;td&gt;squared Euclidean distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;-&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;real&lt;/td&gt;&#xA;      &lt;td&gt;squared Euclidean distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;-&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;real&lt;/td&gt;&#xA;      &lt;td&gt;squared Euclidean distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;-&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;real&lt;/td&gt;&#xA;      &lt;td&gt;squared Euclidean distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;-&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;real&lt;/td&gt;&#xA;      &lt;td&gt;squared Euclidean distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;#&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;real&lt;/td&gt;&#xA;      &lt;td&gt;negative dot product&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;#&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;real&lt;/td&gt;&#xA;      &lt;td&gt;negative dot product&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;#&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;real&lt;/td&gt;&#xA;      &lt;td&gt;negative dot product&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;#&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;real&lt;/td&gt;&#xA;      &lt;td&gt;negative dot product&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;#&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;real&lt;/td&gt;&#xA;      &lt;td&gt;negative dot product&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;=&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;real&lt;/td&gt;&#xA;      &lt;td&gt;cosine distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;=&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;real&lt;/td&gt;&#xA;      &lt;td&gt;cosine distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;=&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;real&lt;/td&gt;&#xA;      &lt;td&gt;cosine distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;=&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;real&lt;/td&gt;&#xA;      &lt;td&gt;cosine distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;=&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;real&lt;/td&gt;&#xA;      &lt;td&gt;cosine distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;~&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;real&lt;/td&gt;&#xA;      &lt;td&gt;jaccard distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;list-of-functions&#34;&gt;List of functions&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Name&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Argument type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Result type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pgvectors_upgrade&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;void&lt;/td&gt;&#xA;      &lt;td&gt;Administration function for upgrading &lt;code&gt;pgvecto.rs&lt;/code&gt;.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;to_svector&lt;/td&gt;&#xA;      &lt;td&gt;dims integer, index integer[], value real[]&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;Construct a sparse vector from two arrays of indexes and values&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;binarize&lt;/td&gt;&#xA;      &lt;td&gt;vector vector&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;Binarize a vector. All positive elements are set to 1, otherwise 0.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;text2vec_openai&lt;/td&gt;&#xA;      &lt;td&gt;input text, model text&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;Embedding function for OpenAI embeddings API.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;text2vec_openai_v3&lt;/td&gt;&#xA;      &lt;td&gt;input text&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;Embedding function for OpenAI embeddings API. The model is set to &lt;code&gt;text-embedding-3-small&lt;/code&gt;.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;list-of-casts&#34;&gt;List of casts&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Source type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Target type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Implicit?&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;real[]&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;yes&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;real[]&lt;/td&gt;&#xA;      &lt;td&gt;yes&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;list-of-access-methods&#34;&gt;List of access methods&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Name&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;Index&lt;/td&gt;&#xA;      &lt;td&gt;pgvecto.rs vector index&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;list-of-operator-families&#34;&gt;List of operator families&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;AM&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Operator family&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Applicable types&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;vector_cos_ops&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;vector_dot_ops&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;vector_l2_ops&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;vecf16_cos_ops&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;vecf16_dot_ops&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;vecf16_l2_ops&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;veci8_cos_ops&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;veci8_dot_ops&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;veci8_l2_ops&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;svector_cos_ops&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;svector_dot_ops&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;svector_l2_ops&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;bvector_cos_ops&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;bvector_dot_ops&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;bvector_l2_ops&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;bvector_jaccard_ops&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;list-of-operator-classes&#34;&gt;List of operator classes&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;AM&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Input type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Operator class&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Default?&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;vector_l2_ops&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;squared Euclidean distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;vector_dot_ops&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;negative dot product&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;vector&lt;/td&gt;&#xA;      &lt;td&gt;vector_cos_ops&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;cosine distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;vecf16_l2_ops&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;squared Euclidean distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;vecf16_dot_ops&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;negative dot product&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;vecf16&lt;/td&gt;&#xA;      &lt;td&gt;vecf16_cos_ops&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;cosine distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;veci8_l2_ops&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;squared Euclidean distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;veci8_dot_ops&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;negative dot product&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;veci8&lt;/td&gt;&#xA;      &lt;td&gt;veci8_cos_ops&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;cosine distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;svector_l2_ops&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;squared Euclidean distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;svector_dot_ops&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;negative dot product&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;svector&lt;/td&gt;&#xA;      &lt;td&gt;svector_cos_ops&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;cosine distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector_l2_ops&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;squared Euclidean distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector_dot_ops&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;negative dot product&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector_cos_ops&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;cosine distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors&lt;/td&gt;&#xA;      &lt;td&gt;bvector&lt;/td&gt;&#xA;      &lt;td&gt;bvector_jaccard_ops&lt;/td&gt;&#xA;      &lt;td&gt;no&lt;/td&gt;&#xA;      &lt;td&gt;jaccard distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;list-of-views&#34;&gt;List of views&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Name&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;pg_vector_index_stat&lt;/td&gt;&#xA;      &lt;td&gt;A view provided for vector index statistics&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Sign up for a cloud account</title>
        <link>https://vchord.pgsty.com/cloud/getting-started/sign-up/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/getting-started/sign-up/</guid>
        <description>&lt;p&gt;Sign up for VectorChord Cloud in just a few seconds and start for free.&lt;/p&gt;&#xA;&lt;p&gt;For information about what&amp;rsquo;s included with the Cloud Free Tier, see &lt;a href=&#34;https://vchord.pgsty.com/cloud/pricing/price-plan/#free-tier&#34;&gt;Cloud Free Tier&lt;/a&gt;. For information about Cloud&amp;rsquo;s paid plan options, see &lt;a href=&#34;https://vchord.pgsty.com/cloud/pricing/price-plan/&#34;&gt;Cloud plans&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;sign-up&#34;&gt;Sign up&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Signing up for VectorChord Cloud is easy. Simply navigate to &lt;a href=&#34;https://cloud.vectorchord.ai&#34;&gt;https://cloud.vectorchord.ai&lt;/a&gt; and sign up with your Github account.&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://vchord.pgsty.com/cloud/images/signup.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;p&gt;After signing up, you are directed to the VectorChord Cloud Console. We will create a default project.&lt;/p&gt;</description>
      </item>
    <item>
        <title>SQL Reference</title>
        <link>https://vchord.pgsty.com/bm25/reference/sql/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/bm25/reference/sql/</guid>
        <description>&lt;h2 id=&#34;vchord_bm25-data-types&#34;&gt;&lt;code&gt;vchord_bm25&lt;/code&gt; Data Types&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Data Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Schema&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Versions&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Text Representation / Structure&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25vector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25_catalog&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v0.1.0&lt;/code&gt; – &lt;code&gt;v0.3.0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;{token_id:freq, ...}&lt;/code&gt; (e.g., &lt;code&gt;{1:1, 2:2, 15:1}&lt;/code&gt;)&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Sparse vector mapping 32-bit unsigned token IDs to 32-bit term frequencies. Stored with &lt;code&gt;STORAGE = EXTERNAL&lt;/code&gt;.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25query&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25_catalog&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v0.1.0&lt;/code&gt; – &lt;code&gt;v0.3.0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;(index_oid regclass, query_vector bm25vector)&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Composite type pairing a target &lt;code&gt;bm25&lt;/code&gt; index OID with a query &lt;code&gt;bm25vector&lt;/code&gt;.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25query&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;public&lt;/code&gt; / ext schema&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;main&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;(vector tsvector, index regclass)&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Composite type pairing a query &lt;code&gt;tsvector&lt;/code&gt; with a target &lt;code&gt;bm25&lt;/code&gt; index OID.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h3 id=&#34;bm25vector-literal-syntax-v01--v03&#34;&gt;&lt;code&gt;bm25vector&lt;/code&gt; Literal Syntax (&lt;code&gt;v0.1&lt;/code&gt; – &lt;code&gt;v0.3&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-546f8210-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;9&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-546f8210-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Empty bm25vector&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;{}&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25vector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Explicit token_id:frequency pairs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;{1:1, 2:3, 10:2}&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25vector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Implicit cast from int[] (automatically aggregates duplicate token IDs into counts)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;ARRAY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25vector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Output: {1:1, 2:3, 10:2}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;vchord_bm25-operators&#34;&gt;&lt;code&gt;vchord_bm25&lt;/code&gt; Operators&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Operator&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Left Arg&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Right Arg&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Return Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Versions&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;&amp;lt;&amp;amp;&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25vector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25query&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;real&lt;/code&gt; (&lt;code&gt;f32&lt;/code&gt;)&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v0.1.0&lt;/code&gt; – &lt;code&gt;v0.3.0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Computes the &lt;strong&gt;negative&lt;/strong&gt; BM25 relevance score ($-\text{BM25}(D, Q)$). Supports index-accelerated &lt;code&gt;ORDER BY ... ASC&lt;/code&gt; scans using &lt;code&gt;bm25_ops&lt;/code&gt;.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;&amp;lt;&amp;amp;&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;tsvector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25query&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;float8&lt;/code&gt; (&lt;code&gt;f64&lt;/code&gt;)&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;main&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Computes the &lt;strong&gt;negative&lt;/strong&gt; BM25 relevance score on native &lt;code&gt;tsvector&lt;/code&gt;. Supports index-accelerated &lt;code&gt;ORDER BY ... ASC&lt;/code&gt; scans using &lt;code&gt;bm25_ops&lt;/code&gt;.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;=&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25vector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25vector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v0.2.0&lt;/code&gt; – &lt;code&gt;v0.3.0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Exact equality comparison between two &lt;code&gt;bm25vector&lt;/code&gt; values.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25vector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25vector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v0.2.0&lt;/code&gt; – &lt;code&gt;v0.3.0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Inequality comparison between two &lt;code&gt;bm25vector&lt;/code&gt; values.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;vchord_bm25-functions&#34;&gt;&lt;code&gt;vchord_bm25&lt;/code&gt; Functions&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Function Signature&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Return Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Versions&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;to_bm25query(index_oid regclass, query_vector bm25vector)&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25query&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v0.1.1&lt;/code&gt; – &lt;code&gt;v0.3.0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Constructs a &lt;code&gt;bm25query&lt;/code&gt; from a &lt;code&gt;bm25&lt;/code&gt; index name/OID and a query &lt;code&gt;bm25vector&lt;/code&gt; (or &lt;code&gt;INT[]&lt;/code&gt; via implicit cast).&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;to_bm25query(index_oid regclass, query_vector int[])&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25query&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v0.3.0+&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Explicit overload accepting an &lt;code&gt;INT[]&lt;/code&gt; token ID array directly.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;to_bm25query(vector tsvector, index regclass)&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25query&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;main&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Constructs a &lt;code&gt;bm25query&lt;/code&gt; from a native &lt;code&gt;tsvector&lt;/code&gt; and target &lt;code&gt;bm25&lt;/code&gt; index name/OID.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;search_bm25query(target_vector bm25vector, query bm25query)&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;real&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v0.1.0&lt;/code&gt; – &lt;code&gt;v0.3.0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Underlying implementation function for &lt;code&gt;bm25vector &amp;lt;&amp;amp;&amp;gt; bm25query&lt;/code&gt;.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;_bm25_evaluate(left tsvector, right bm25query)&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;float8&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;main&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Underlying implementation function for &lt;code&gt;tsvector &amp;lt;&amp;amp;&amp;gt; bm25query&lt;/code&gt;.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25_page_inspect(index regclass, blkno int)&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;text&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v0.3.0&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Returns human-readable diagnostic metadata for block &lt;code&gt;blkno&lt;/code&gt; of a &lt;code&gt;bm25&lt;/code&gt; index.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;vchord_bm25-access-method--operator-class&#34;&gt;&lt;code&gt;vchord_bm25&lt;/code&gt; Access Method &amp;amp; Operator Class&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Object&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Name&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Target Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Ordering Operator&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Access Method&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Index&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Handler &lt;code&gt;_bm25_amhandler&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Operator Family&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25_ops&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;USING bm25&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;OPERATOR 1 pg_catalog.&amp;lt;&amp;amp;&amp;gt; FOR ORDER BY float_ops&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Operator Class&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25_ops&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25vector&lt;/code&gt; (&lt;code&gt;v0.1&lt;/code&gt;–&lt;code&gt;v0.3&lt;/code&gt;) / &lt;code&gt;tsvector&lt;/code&gt; (&lt;code&gt;main&lt;/code&gt;)&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Default operator class for &lt;code&gt;USING bm25&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pg_tokenizer-functions-tokenizer_catalog&#34;&gt;&lt;code&gt;pg_tokenizer&lt;/code&gt; Functions (&lt;code&gt;tokenizer_catalog&lt;/code&gt;)&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;All &lt;code&gt;pg_tokenizer&lt;/code&gt; functions reside in the &lt;code&gt;tokenizer_catalog&lt;/code&gt; schema:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Tokenizer Architecture &amp; Usage</title>
        <link>https://vchord.pgsty.com/bm25/tokenizer/overview/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/bm25/tokenizer/overview/</guid>
        <description>&lt;h2 id=&#34;two-stage-tokenization-pipeline&#34;&gt;Two-Stage Tokenization Pipeline&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;A &lt;code&gt;tokenizer&lt;/code&gt; in &lt;code&gt;pg_tokenizer&lt;/code&gt; consists of up to two stages that transform a raw &lt;code&gt;TEXT&lt;/code&gt; string into an &lt;code&gt;INT[]&lt;/code&gt; array of integer token IDs:&lt;/p&gt;&#xA;&lt;pre class=&#34;td-mermaid-source&#34;&gt;&lt;code class=&#34;language-mermaid&#34;&gt;flowchart LR&#xA;    A[&amp;#34;Raw Text\\n(TEXT)&amp;#34;] --&amp;gt; B[&amp;#34;Stage 1: Text Analyzer\\n1. character_filters\\n2. pre_tokenizer\\n3. token_filters&amp;#34;]&#xA;    B --&amp;gt; C[&amp;#34;Normalized Tokens\\n(TEXT[])&amp;#34;]&#xA;    C --&amp;gt; D[&amp;#34;Stage 2: Model\\nVocabulary Mapping / Subword BPE&amp;#34;]&#xA;    D --&amp;gt; E[&amp;#34;Token ID Array\\n(INT[] → bm25vector)&amp;#34;]&lt;/code&gt;&lt;/pre&gt;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Text Analyzer (&lt;code&gt;text_analyzer&lt;/code&gt;)&lt;/strong&gt;: Splits raw text into a &lt;code&gt;TEXT[]&lt;/code&gt; array of normalized string tokens by applying a sequential pipeline of:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Character Filters (&lt;code&gt;character_filters&lt;/code&gt;)&lt;/strong&gt;: Transform the raw string before splitting (e.g., &lt;code&gt;to_lowercase&lt;/code&gt;, &lt;code&gt;unicode_normalization&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Pre-tokenizer (&lt;code&gt;pre_tokenizer&lt;/code&gt;)&lt;/strong&gt;: Splits the string into initial substrings (&lt;code&gt;unicode_segmentation&lt;/code&gt;, &lt;code&gt;regex&lt;/code&gt;, or Chinese &lt;code&gt;jieba&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Token Filters (&lt;code&gt;token_filters&lt;/code&gt;)&lt;/strong&gt;: Filter or transform individual tokens (&lt;code&gt;skip_non_alphanumeric&lt;/code&gt;, &lt;code&gt;stemmer&lt;/code&gt;, &lt;code&gt;stopwords&lt;/code&gt;, &lt;code&gt;synonym&lt;/code&gt;, &lt;code&gt;pg_dict&lt;/code&gt;, &lt;code&gt;ngram&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Model (&lt;code&gt;model&lt;/code&gt;)&lt;/strong&gt;: Maps the string tokens (or raw text, for standalone subword models like &lt;code&gt;llmlingua2&lt;/code&gt;, &lt;code&gt;bert_base_uncased&lt;/code&gt;, &lt;code&gt;gemma2b&lt;/code&gt;, HuggingFace, or &lt;code&gt;lindera&lt;/code&gt;) into integer token IDs (&lt;code&gt;INT[]&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Note&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Pretrained subword models&lt;/strong&gt; (&lt;code&gt;llmlingua2&lt;/code&gt;, &lt;code&gt;bert_base_uncased&lt;/code&gt;, &lt;code&gt;gemma2b&lt;/code&gt;), &lt;strong&gt;HuggingFace models&lt;/strong&gt;, and &lt;strong&gt;Lindera models&lt;/strong&gt; include their own built-in tokenization rules and do not require a separate &lt;code&gt;text_analyzer&lt;/code&gt; stage.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Dictionary/corpus models&lt;/strong&gt; (&lt;code&gt;wiki_tocken&lt;/code&gt; and custom models created via &lt;code&gt;create_custom_model&lt;/code&gt;) require a &lt;code&gt;text_analyzer&lt;/code&gt; stage to split and normalize text before looking up token IDs in the model&amp;rsquo;s vocabulary table.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h2 id=&#34;creating-and-using-a-tokenizer&#34;&gt;Creating and Using a Tokenizer&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;All configuration in &lt;code&gt;pg_tokenizer&lt;/code&gt; uses &lt;strong&gt;TOML&lt;/strong&gt; format passed as a dollar-quoted string (&lt;code&gt;$$ ... $$&lt;/code&gt;).&lt;/p&gt;</description>
      </item>
    <item>
        <title>Troubleshooting</title>
        <link>https://vchord.pgsty.com/cloud/troubleshooting/troubleshooting/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/troubleshooting/troubleshooting/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;Connectivity&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;connectivity&#34;&gt;Connectivity&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;1-cluster-is-not-reachable-you-can-check-the-following&#34;&gt;1. Cluster is not reachable, you can check the following:&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;If the status of the cluster, if it is &lt;code&gt;NotReady&lt;/code&gt;, you can check the metrics of the cluster to see if there are free space for PGData.&lt;/p&gt;&#xA;&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;Do not delete your cluster, it will cause data loss.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;You can upgrade your cluster to a larger size to solve the problem, you can refer to the &lt;a href=&#34;https://vchord.pgsty.com/cloud/manage/upgrade/#increasing-only-storage&#34;&gt;upgrade cluster storage&lt;/a&gt; for more information. After the upgrade is completed, the cluster will be in the &lt;code&gt;Ready&lt;/code&gt; status, and the cluster will be reachable.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;If above solution does not work, you can contact us at &lt;a href=&#34;https://discord.com/channels/974584200327991326/1243043133801889792&#34;&gt;Discord&lt;/a&gt;, we are happy to help.&lt;/p&gt;</description>
      </item>
    <item>
        <title>8-Bit Integer Vector: `veci8`</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/reference/vector-types/veci8/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/reference/vector-types/veci8/</guid>
        <description>&lt;span class=&#34;td-badge td-badge--info&#34;&gt;since v0.3.0&lt;/span&gt;&#xA;&lt;p&gt;&lt;code&gt;Int8&lt;/code&gt; is a data type used to represent signed integers. It stands for &amp;ldquo;integer 8-bit&amp;rdquo; and typically uses 8 bits of memory to store a value. This allows it to represent integer values ranging from &lt;code&gt;-128&lt;/code&gt; to &lt;code&gt;127&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Since each element in the vector only requires 8 bits (1 byte) of memory, &lt;code&gt;veci8&lt;/code&gt; can help reduce the overall memory footprint of your program.&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s an example of creating a table with a &lt;code&gt;veci8&lt;/code&gt; column and inserting values:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Adaptive retrieval and shortening embeddings</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/use-case/adaptive-retrieval/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/use-case/adaptive-retrieval/</guid>
        <description>&lt;p&gt;OpenAI &lt;a href=&#34;https://openai.com/blog/new-embedding-models-and-api-updates&#34;&gt;latest embedding models&lt;/a&gt; support shortening embeddings, where developers could simply “remove some numbers from the end of a sequence” and still maintain a valid representation for text.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;This enables very flexible usage. For example, when using a vector data store that only supports embeddings up to 1024 dimensions long, developers can now still use our best embedding model text-embedding-3-large and specify a value of 1024 for the dimensions API parameter, which will shorten the embedding down from 3072 dimensions, trading off some accuracy in exchange for the smaller vector size.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
      </item>
    <item>
        <title>Attribution &amp; Provenance</title>
        <link>https://vchord.pgsty.com/about/attribution/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/about/attribution/</guid>
        <description>&lt;p&gt;&lt;code&gt;vchord.pgsty.com&lt;/code&gt; is maintained by &lt;a href=&#34;https://pigsty.io/&#34;&gt;PGSTY&lt;/a&gt; to provide a comprehensive, searchable documentation and engineering reference for the &lt;strong&gt;Vchord&lt;/strong&gt; extension suite (&lt;strong&gt;&lt;code&gt;vchord&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;vchord_bm25&lt;/code&gt;&lt;/strong&gt;, and &lt;strong&gt;&lt;code&gt;pg_tokenizer&lt;/code&gt;&lt;/strong&gt;).&lt;/p&gt;&#xA;&lt;h2 id=&#34;upstream-sources&#34;&gt;Upstream Sources&#xA;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Documentation (&lt;code&gt;content/docs/&lt;/code&gt;, &lt;code&gt;content/cloud/&lt;/code&gt;, &lt;code&gt;content/pgvecto-rs/&lt;/code&gt;)&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Source Repository&lt;/strong&gt;: &lt;a href=&#34;https://github.com/tensorchord/pgvecto.rs-docs&#34;&gt;&lt;code&gt;https://github.com/tensorchord/pgvecto.rs-docs&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Original Site&lt;/strong&gt;: &lt;a href=&#34;https://docs.vectorchord.ai/&#34;&gt;&lt;code&gt;https://docs.vectorchord.ai/&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Copyright&lt;/strong&gt;: © 2023–Present TensorChord Inc. and Contributors.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Adaptations&lt;/strong&gt;: Converted from VitePress to Hugo + &lt;a href=&#34;https://github.com/pgsty/oink&#34;&gt;OINK &lt;code&gt;v1.4.0&lt;/code&gt;&lt;/a&gt;, including GitHub-style callout normalization, KaTeX math delimiter standardization, internal link resolution, and structural navigation metadata.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Engineering Blog &amp;amp; Release Notes (&lt;code&gt;content/blog/&lt;/code&gt;)&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Original Publication&lt;/strong&gt;: &lt;a href=&#34;https://blog.vectorchord.ai/&#34;&gt;&lt;code&gt;https://blog.vectorchord.ai/&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Copyright&lt;/strong&gt;: © 2023–Present TensorChord Inc. and respective article authors (&lt;code&gt;Keming&lt;/code&gt;, &lt;code&gt;Haze&lt;/code&gt;, &lt;code&gt;VoVAllen&lt;/code&gt;, &lt;code&gt;Yifanwang&lt;/code&gt;, &lt;code&gt;Kolkri&lt;/code&gt;, &lt;code&gt;Gin&lt;/code&gt;, &lt;code&gt;Scase&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Adaptations&lt;/strong&gt;: Archived into &lt;code&gt;content/blog/post/&lt;/code&gt; and &lt;code&gt;content/blog/release/&lt;/code&gt; with original publication dates, author metadata, and direct &lt;code&gt;upstream_link&lt;/code&gt; provenance pointers.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Vchord Extension Suite (&lt;code&gt;vchord&lt;/code&gt;, &lt;code&gt;vchord_bm25&lt;/code&gt;, and &lt;code&gt;pg_tokenizer&lt;/code&gt;)&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;vchord&lt;/code&gt; (&lt;a href=&#34;https://github.com/pgsty/vchord&#34;&gt;&lt;code&gt;pgsty/vchord&lt;/code&gt;&lt;/a&gt;) Forked From&lt;/strong&gt;: &lt;a href=&#34;https://github.com/supervc-stack/VectorChord&#34;&gt;&lt;code&gt;https://github.com/supervc-stack/VectorChord&lt;/code&gt;&lt;/a&gt; (formerly &lt;a href=&#34;https://github.com/tensorchord/VectorChord&#34;&gt;&lt;code&gt;tensorchord/VectorChord&lt;/code&gt;&lt;/a&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;vchord_bm25&lt;/code&gt; (&lt;a href=&#34;https://github.com/pgsty/vchord_bm25&#34;&gt;&lt;code&gt;pgsty/vchord_bm25&lt;/code&gt;&lt;/a&gt;) Forked From&lt;/strong&gt;: &lt;a href=&#34;https://github.com/supervc-stack/VectorChord-bm25&#34;&gt;&lt;code&gt;https://github.com/supervc-stack/VectorChord-bm25&lt;/code&gt;&lt;/a&gt; (formerly &lt;a href=&#34;https://github.com/tensorchord/VectorChord-bm25&#34;&gt;&lt;code&gt;tensorchord/VectorChord-bm25&lt;/code&gt;&lt;/a&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;pg_tokenizer&lt;/code&gt; (&lt;a href=&#34;https://github.com/pgsty/pg_tokenizer&#34;&gt;&lt;code&gt;pgsty/pg_tokenizer&lt;/code&gt;&lt;/a&gt;) Forked From&lt;/strong&gt;: &lt;a href=&#34;https://github.com/supervc-stack/pg_tokenizer.rs&#34;&gt;&lt;code&gt;https://github.com/supervc-stack/pg_tokenizer.rs&lt;/code&gt;&lt;/a&gt; (formerly &lt;a href=&#34;https://github.com/tensorchord/pg_tokenizer.rs&#34;&gt;&lt;code&gt;tensorchord/pg_tokenizer.rs&lt;/code&gt;&lt;/a&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Predecessor Project&lt;/strong&gt;: &lt;a href=&#34;https://github.com/tensorchord/pgvecto.rs&#34;&gt;&lt;code&gt;https://github.com/tensorchord/pgvecto.rs&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
      </item>
    <item>
        <title>Supercharge vector search with ColBERT rerank in PostgreSQL</title>
        <link>https://vchord.pgsty.com/docs/use-case/colbert-rerank/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/use-case/colbert-rerank/</guid>
        <description>&lt;p&gt;Traditional vector search methods typically employ sentence embeddings to locate similar content. However, generating sentence embeddings through pooling token embeddings can potentially sacrifice fine-grained details present at the token level. &lt;a href=&#34;https://github.com/stanford-futuredata/ColBERT&#34;&gt;ColBERT&lt;/a&gt; overcomes this by representing text as token-level multi-vectors rather than a single, aggregated vector. This approach, leveraging contextual late interaction at the token level, allows ColBERT to retain more nuanced information and improve search accuracy compared to methods relying solely on sentence embeddings.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Collect Metrics</title>
        <link>https://vchord.pgsty.com/cloud/monitoring/collect-metrics/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/monitoring/collect-metrics/</guid>
        <description>&lt;p&gt;VectorChord Cloud shows some database metrics on &lt;a href=&#34;https://cloud.vectorchord.ai&#34;&gt;cloud.vectorchord.ai&lt;/a&gt;. If you want to collect metrics from your database into your self-hosted metrics system, you can follow this guide. Metrics detail can be found in the &lt;a href=&#34;https://vchord.pgsty.com/cloud/monitoring/collect-metrics/#appendix&#34;&gt;Appendix&lt;/a&gt; section.&lt;/p&gt;&#xA;&lt;h2 id=&#34;where-to-find-your-metrics&#34;&gt;Where to find your metrics&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;You can find your metrics on your database’s domain name with the metrics endpoint. You must provide a VectorChord Cloud API Key in order to access these metrics. You can generate a API Key from the &lt;a href=&#34;https://vchord.pgsty.com/cloud/manage/apikey/&#34;&gt;API Keys&lt;/a&gt; section.&lt;/p&gt;</description>
      </item>
    <item>
        <title>GUC &amp; Index Parameters</title>
        <link>https://vchord.pgsty.com/bm25/reference/gucs/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/bm25/reference/gucs/</guid>
        <description>&lt;h2 id=&#34;stable-releases-v010--v030-bm25_catalog-gucs&#34;&gt;Stable Releases (&lt;code&gt;v0.1.0&lt;/code&gt; – &lt;code&gt;v0.3.0&lt;/code&gt;): &lt;code&gt;bm25_catalog.*&lt;/code&gt; GUCs&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In versions &lt;code&gt;v0.1.0&lt;/code&gt; through &lt;code&gt;v0.3.0&lt;/code&gt;, all session GUC parameters use the &lt;code&gt;bm25_catalog.&lt;/code&gt; prefix and can be changed per session or transaction by any user (&lt;code&gt;GucContext::Userset&lt;/code&gt;):&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Parameter Name&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Default&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Valid Range&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25_catalog.bm25_limit&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;100&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-1&lt;/code&gt; .. &lt;code&gt;65535&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Maximum number of top-scoring documents to return from a &lt;code&gt;bm25&lt;/code&gt; index scan. Set to &lt;code&gt;-1&lt;/code&gt; to disable Block-WeakAnd pruning and perform an exhaustive brute-force scan; set to &lt;code&gt;0&lt;/code&gt; to return no rows. Must be &lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;\ge&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.7719em;vertical-align:-0.136em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mrel&#34;&gt;≥&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; your SQL &lt;code&gt;LIMIT&lt;/code&gt;.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25_catalog.enable_index&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;boolean&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;true&lt;/code&gt; / &lt;code&gt;false&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Enables or disables the &lt;code&gt;bm25&lt;/code&gt; index scan in the PostgreSQL query planner. Set to &lt;code&gt;false&lt;/code&gt; to force a sequential scan with exact &lt;code&gt;search_bm25query&lt;/code&gt; evaluation.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25_catalog.enable_prefilter&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;boolean&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;true&lt;/code&gt; / &lt;code&gt;false&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Introduced in &lt;code&gt;v0.2.2&lt;/code&gt;. When &lt;code&gt;true&lt;/code&gt;, filters out documents that do not satisfy the query/visibility check before inserting them into the Block-WeakAnd Top-K heap.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25_catalog.segment_growing_max_page_size&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;4096&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;1&lt;/code&gt; .. &lt;code&gt;1000000&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Maximum size (in 8 KB pages, default &lt;code&gt;4096&lt;/code&gt; = 32 MB) of the append-only growing segment before it is sealed into a compressed, delta-bitpacked read-only segment.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h3 id=&#34;examples-v01--v03&#34;&gt;Examples (&lt;code&gt;v0.1&lt;/code&gt; – &lt;code&gt;v0.3&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-538e559b-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;11&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-538e559b-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Increase Top-K window for deep pagination (e.g., LIMIT 500)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25_catalog&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25_limit&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;500&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Force brute-force scan over all index postings&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25_catalog&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25_limit&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Enable prefiltering for queries with selective WHERE clauses&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25_catalog&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enable_prefilter&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Disable index scan to benchmark sequential scan baseline&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25_catalog&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enable_index&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;next-gen-main-branch-bm25-gucs--index-reloptions&#34;&gt;Next-Gen &lt;code&gt;main&lt;/code&gt; Branch: &lt;code&gt;bm25.*&lt;/code&gt; GUCs &amp;amp; Index Reloptions&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In the &lt;code&gt;main&lt;/code&gt; branch rewrite, session GUCs use the &lt;code&gt;bm25.&lt;/code&gt; prefix and work together with per-index storage parameters (&lt;code&gt;WITH (...)&lt;/code&gt;):&lt;/p&gt;</description>
      </item>
    <item>
        <title>Indexing Options</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/reference/indexing_options/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/reference/indexing_options/</guid>
        <description>&lt;p&gt;We utilize &lt;a href=&#34;https://toml.io/en/v1.0.0&#34;&gt;TOML syntax&lt;/a&gt; to express the index&amp;rsquo;s configuration. Here&amp;rsquo;s what each key in the configuration signifies:&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Key&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;segment&lt;/td&gt;&#xA;      &lt;td&gt;table&lt;/td&gt;&#xA;      &lt;td&gt;Options for segments.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;optimizing&lt;/td&gt;&#xA;      &lt;td&gt;table&lt;/td&gt;&#xA;      &lt;td&gt;Options for background optimizing.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;indexing&lt;/td&gt;&#xA;      &lt;td&gt;table&lt;/td&gt;&#xA;      &lt;td&gt;The algorithm to be used for indexing.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;options-for-table-segment&#34;&gt;Options for table &lt;code&gt;segment&lt;/code&gt;&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Key&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Range&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Default&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;max_growing_segment_size&lt;/td&gt;&#xA;      &lt;td&gt;integer&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;[1, 4_000_000_000]&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;20_000&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Maximum size of unindexed vectors.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;max_sealed_segment_size&lt;/td&gt;&#xA;      &lt;td&gt;integer&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;[1, 4_000_000_000]&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;1_000_000&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Maximum size of vectors for indexing.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;options-for-table-optimizing&#34;&gt;Options for table &lt;code&gt;optimizing&lt;/code&gt;&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Key&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Range&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Default&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;optimizing_threads&lt;/td&gt;&#xA;      &lt;td&gt;integer&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;[1, 65535]&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;sqrt of the number of cores&lt;/td&gt;&#xA;      &lt;td&gt;Maximum threads for indexing.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;sealing_secs&lt;/td&gt;&#xA;      &lt;td&gt;integer&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;[1, 60]&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;60&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;See below.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;sealing_size&lt;/td&gt;&#xA;      &lt;td&gt;integer&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;[1, 4_000_000_000]&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;See below.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;If a write segment larger than &lt;code&gt;sealing_size&lt;/code&gt; do not accept new data for &lt;code&gt;sealing_secs&lt;/code&gt; seconds, the write segment will be turned to a sealed segment.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Installation</title>
        <link>https://vchord.pgsty.com/bm25/getting-started/installation/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/bm25/getting-started/installation/</guid>
        <description>&lt;p&gt;&lt;code&gt;vchord_bm25&lt;/code&gt; supports &lt;strong&gt;PostgreSQL 14, 15, 16, 17, and 18&lt;/strong&gt; on Linux (&lt;code&gt;x86_64&lt;/code&gt; and &lt;code&gt;aarch64&lt;/code&gt;) and macOS.&lt;/p&gt;&#xA;&lt;h2 id=&#34;method-1-pigsty--native-os-packages-recommended&#34;&gt;Method 1: Pigsty / Native OS Packages (Recommended)&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://pgsty.com&#34;&gt;&lt;strong&gt;Pigsty&lt;/strong&gt;&lt;/a&gt; provides pre-built native RPM and DEB packages for &lt;code&gt;vchord&lt;/code&gt;, &lt;code&gt;vchord_bm25&lt;/code&gt;, and &lt;code&gt;pg_tokenizer&lt;/code&gt; across EL 8/9/10, Debian 12/13, and Ubuntu 22.04/24.04 for PostgreSQL 14–18.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-6f251e6f-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-6f251e6f-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Install via Pigsty CLI (automatically resolves PG version and OS distro)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext install vchord_bm25&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext install pg_tokenizer&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Or install directly via &lt;code&gt;apt&lt;/code&gt; / &lt;code&gt;dnf&lt;/code&gt; once the Pigsty repository is configured:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Installation</title>
        <link>https://vchord.pgsty.com/docs/getting-started/installation/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/getting-started/installation/</guid>
        <description>&lt;p&gt;VectorChord is tested on the following operating system:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Ubuntu (x86_64, aarch64)&lt;/li&gt;&#xA;&lt;li&gt;MacOS (x86_64, aarch64)&lt;/li&gt;&#xA;&lt;li&gt;Windows (x86_64)&lt;/li&gt;&#xA;&lt;li&gt;Alpine Linux (x86_64, aarch64) &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;&#xA;&lt;li&gt;Debian (powerpc64le, s390x, riscv64) &lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Please report a bug if you encounter issues on any of the above operating systems, or submit a feature request for additional platform support.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;Docker&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;docker&#34;&gt;Docker&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;vectorchord-image&#34;&gt;VectorChord Image&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://hub.docker.com/r/tensorchord/vchord-postgres&#34;&gt;&lt;img src=&#34;https://img.shields.io/docker/pulls/tensorchord/vchord-postgres&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The easiest way to try VectorChord is to run it from a ready-to use &lt;a href=&#34;https://hub.docker.com/r/tensorchord/vchord-postgres&#34;&gt;Docker image&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Installation</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/getting-started/installation/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/getting-started/installation/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;We strongly encourage you to explore our new &lt;a href=&#34;https://github.com/pgsty/vchord&#34;&gt;VectorChord&lt;/a&gt; implementation, which offers improved stability and performance. Users are encouraged to migrate to VectorChord. See the &lt;a href=&#34;https://vchord.pgsty.com/docs/admin/migration/&#34;&gt;migration guide&lt;/a&gt; for assistance.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;There are four ways to install &lt;code&gt;pgvecto.rs&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;Docker&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;docker&#34;&gt;Docker&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://hub.docker.com/r/tensorchord/pgvecto-rs&#34;&gt;&lt;img src=&#34;https://img.shields.io/docker/pulls/tensorchord/pgvecto-rs&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The easiest way to try &lt;code&gt;pgvecto.rs&lt;/code&gt; is to run it from a ready-to use &lt;a href=&#34;https://hub.docker.com/r/tensorchord/pgvecto-rs&#34;&gt;Docker image&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-ac1f8251-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sh&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-ac1f8251-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name pgvecto-rs-demo &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;nv&#34;&gt;POSTGRES_PASSWORD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;mysecretpassword &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 5432:5432 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d tensorchord/pgvecto-rs:pg16-v0.2.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Then you can connect to the database using the &lt;code&gt;psql&lt;/code&gt; command line tool. The default username is &lt;code&gt;postgres&lt;/code&gt;, and the default password is &lt;code&gt;mysecretpassword&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>View Invoice</title>
        <link>https://vchord.pgsty.com/cloud/payment/invoice/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/payment/invoice/</guid>
        <description>&lt;p&gt;Currently, the VectorChord Cloud has Orb as its billing provider. From the Billing page, you can click &lt;code&gt;View invoices in Orb&lt;/code&gt; to go to the Orb &lt;code&gt;Customer Portal&lt;/code&gt;. On this external page you can do the following:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Review your compute resource and storage usage&lt;/li&gt;&#xA;&lt;li&gt;Review your invoices, both paid, issued, and draft&lt;/li&gt;&#xA;&lt;li&gt;Pay invoices that have been unsuccessfully charged&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://vchord.pgsty.com/cloud/images/billing_invoice_intro.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;h2 id=&#34;review-the-amount-of-usage&#34;&gt;Review the amount of usage&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;On the &lt;code&gt;Overview&lt;/code&gt; page of the &lt;code&gt;Customer Portal&lt;/code&gt;, the &lt;code&gt;Current Billing Period&lt;/code&gt; section allows you to check your recent usage:&lt;/p&gt;</description>
      </item>
    <item>
        <title>LlamaIndex</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/integration/llama-index/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/integration/llama-index/</guid>
        <description>&lt;p&gt;LlamaIndex is a simple, flexible data framework for connecting custom data sources to large language models (LLMs).&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;pgvecto.rs&lt;/code&gt; provides a LlamaIndex integration that allows you to retrieve the most similar vectors.&lt;/p&gt;&#xA;&lt;h2 id=&#34;install-dependencies&#34;&gt;Install dependencies&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Some dependencies are required to use the LlamaIndex integration:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-0e6424d9-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sh&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-0e6424d9-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install llama-index &lt;span class=&#34;s2&#34;&gt;&amp;#34;pgvecto_rs[sdk]&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;You could start the postgres instance with &lt;code&gt;pgvecto.rs&lt;/code&gt; extension in a docker container:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-0e6424d9-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sh&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-0e6424d9-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name pgvecto-rs-demo &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;nv&#34;&gt;POSTGRES_PASSWORD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;mysecretpassword &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 5432:5432 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d tensorchord/pgvecto-rs:pg16-v0.2.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Then you can connect to the database using the &lt;code&gt;psql&lt;/code&gt; command line tool. The default username is &lt;code&gt;postgres&lt;/code&gt;, and the default password is &lt;code&gt;mysecretpassword&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Multi-Vector Retrieval</title>
        <link>https://vchord.pgsty.com/docs/usage/multi-vector-retrieval/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/usage/multi-vector-retrieval/</guid>
        <description>&lt;span class=&#34;td-badge td-badge--info&#34;&gt;since v0.3.0&lt;/span&gt;&#xA;&lt;p&gt;Multi-Vector Retrieval is an advanced technique used in Retrieval-Augmented Generation (RAG) systems to enhance document retrieval by leveraging multiple vectors per document.&lt;/p&gt;&#xA;&lt;p&gt;Unlike Single-Vector Retrieval, Multi-Vector Retrieval using the &lt;code&gt;MaxSim&lt;/code&gt; operator enables capturing fine-grained semantic relationships.&lt;/p&gt;&#xA;&lt;p&gt;Refer to &lt;a href=&#34;https://vchord.pgsty.com/blog/post/beyond-text-unlock-ocr-free-rag-in-postgresql-with-modal-and-vectorchord/&#34;&gt;our blog&lt;/a&gt; for more details on building an end-to-end Multi-Vector Retrieval application.&lt;/p&gt;&#xA;&lt;h2 id=&#34;how-to-start&#34;&gt;How to start&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Late interaction models embed documents and queries as vector arrays separately and compute similarity through an operator called &lt;code&gt;MaxSim&lt;/code&gt;. The definition of the &lt;code&gt;MaxSim&lt;/code&gt; operator is &lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;∑&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;\sum_i \max_j q_i \cdot d_j&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:1.0497em;vertical-align:-0.2997em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mop&#34;&gt;&lt;span class=&#34;mop op-symbol small-op&#34; style=&#34;position:relative;top:0em;&#34;&gt;∑&lt;/span&gt;&lt;span class=&#34;msupsub&#34;&gt;&lt;span class=&#34;vlist-t vlist-t2&#34;&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.162em;&#34;&gt;&lt;span style=&#34;top:-2.4003em;margin-left:0em;margin-right:0.05em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:2.7em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;katex-sizing reset-size6 size3 mtight&#34;&gt;&lt;span class=&#34;mord mathnormal mtight&#34;&gt;i&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-s&#34;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.2997em;&#34;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.1667em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mop&#34;&gt;&lt;span class=&#34;mop&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;msupsub&#34;&gt;&lt;span class=&#34;vlist-t vlist-t2&#34;&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.3117em;&#34;&gt;&lt;span style=&#34;top:-2.55em;margin-right:0.05em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:2.7em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;katex-sizing reset-size6 size3 mtight&#34;&gt;&lt;span class=&#34;mord mathnormal mtight&#34; style=&#34;margin-right:0.0572em;&#34;&gt;j&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-s&#34;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.2861em;&#34;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.1667em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.0359em;&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;msupsub&#34;&gt;&lt;span class=&#34;vlist-t vlist-t2&#34;&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.3117em;&#34;&gt;&lt;span style=&#34;top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:2.7em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;katex-sizing reset-size6 size3 mtight&#34;&gt;&lt;span class=&#34;mord mathnormal mtight&#34;&gt;i&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-s&#34;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.15em;&#34;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.2222em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mbin&#34;&gt;⋅&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.2222em;&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.9805em;vertical-align:-0.2861em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;&lt;span class=&#34;mord mathnormal&#34;&gt;d&lt;/span&gt;&lt;span class=&#34;msupsub&#34;&gt;&lt;span class=&#34;vlist-t vlist-t2&#34;&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.3117em;&#34;&gt;&lt;span style=&#34;top:-2.55em;margin-left:0em;margin-right:0.05em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:2.7em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;katex-sizing reset-size6 size3 mtight&#34;&gt;&lt;span class=&#34;mord mathnormal mtight&#34; style=&#34;margin-right:0.0572em;&#34;&gt;j&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-s&#34;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.2861em;&#34;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, meaning that for each vector in the query vector array, the closest vector in the document vector array is found, their dot product is calculated, and the results are summed.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Performance Benchmarking</title>
        <link>https://vchord.pgsty.com/docs/benchmark/performance/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/benchmark/performance/</guid>
        <description>&lt;p&gt;Here we present a comprehensive benchmark comparing our implementation of VectorChord with other vector databases, focusing on QPS and scalability.  If you are interested in the details of our implementation, please refer to our blog &lt;a href=&#34;https://vchord.pgsty.com/blog/post/vectorchord-store-400k-vectors-for-1-in-postgresql/&#34;&gt;VectorChord: Store 400k Vectors for $1 in PostgreSQL&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;QPS&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;qps&#34;&gt;QPS&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;laion-5m&#34;&gt;LAION 5M&#xA;&lt;/h3&gt;&#xA;&lt;img src=&#34;https://vchord.pgsty.com/docs/images/laion-5m-top10.png&#34; alt=&#34;QPS on LAION 5M top 10&#34; style=&#34;width: 100%; height: auto; margin: 0 auto; display: block;&#34; /&gt;&#xA;&lt;p&gt;In LAION 5M dataset, VectorChord achieved more than 3x QPS at 0.95 recall compared to different vector databases, including MyScale, pgvector, pinecone, weaviate, qdrant and zilliz(milvus).&lt;/p&gt;</description>
      </item>
    <item>
        <title>Comparison with pgvector</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/faqs/comparison-pgvector/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/faqs/comparison-pgvector/</guid>
        <description>&lt;p&gt;Original post: &lt;a href=&#34;https://vchord.pgsty.com/blog/post/pgvector-vs-pgvectors-in-2024-a-comprehensive-comparison-for-vector-search-in-postgresql/&#34;&gt;pgvector vs. pgvecto.rs in 2024: A Comprehensive Comparison for Vector Search in PostgreSQL&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;TL; DR: Please navigate directly to the &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/faqs/comparison-pgvector/#summary&#34;&gt;final section&lt;/a&gt; that contains a table showcasing the main distinctions.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;Search&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;search&#34;&gt;Search&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Search is essential for a database. It plays a pivotal role in facilitating efficient data retrieval, enabling users to quickly find and access the information they need. We will demonstrate their performance and highlight the various features &lt;a href=&#34;https://github.com/tensorchord/pgvecto.rs&#34;&gt;pgvecto.rs&lt;/a&gt; and pgvector offer.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Projects</title>
        <link>https://vchord.pgsty.com/cloud/manage/project/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/manage/project/</guid>
        <description>&lt;p&gt;With VectorChord Cloud, everything starts with the project. It is the top-level object in the hierarchy. A project can hold as many &lt;code&gt;Postgres&lt;/code&gt; clusters as needed. The maximum number of projects you can create and join is 5.&lt;/p&gt;&#xA;&lt;p&gt;Learn more about projects and how to manage them in these sections:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vchord.pgsty.com/cloud/manage/project/#project-setting&#34;&gt;Project Setting&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vchord.pgsty.com/cloud/manage/project/#project-billing&#34;&gt;Project Billing&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;project-setting&#34;&gt;Project Setting&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In project setting, you can view and edit the project information. You can switch to another project by clicking the project name in the bottom left corner of the page. The default project is the first project we created for you when you signed up. In below diagram, you can change the name, invite members to the project, and leave the project.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Querying &amp; Scoring</title>
        <link>https://vchord.pgsty.com/bm25/usage/querying/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/bm25/usage/querying/</guid>
        <description>&lt;h2 id=&#34;basic-top-k-query-syntax&#34;&gt;Basic Top-K Query Syntax&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;To run an index-accelerated Top-K BM25 search, use the &lt;code&gt;&amp;lt;&amp;amp;&amp;gt;&lt;/code&gt; operator in the &lt;code&gt;ORDER BY&lt;/code&gt; clause together with &lt;code&gt;to_bm25query&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7c1af67-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;9&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7c1af67-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- v0.1 – v0.3 (bm25vector + pg_tokenizer)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;passage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;amp;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;to_bm25query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;documents_embedding_bm25&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tokenize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;PostgreSQL vector search&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;my_tokenizer&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;AS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw_score&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;amp;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;to_bm25query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;documents_embedding_bm25&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tokenize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;PostgreSQL vector search&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;my_tokenizer&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;AS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25_score&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;documents&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;ORDER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;BY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw_score&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ASC&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;LIMIT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7c1af67-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;8&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7c1af67-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- main branch (native tsvector)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;passage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;amp;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;to_bm25query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;to_tsvector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;english&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;PostgreSQL vector search&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;documents_bm25_idx&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;AS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25_score&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;documents&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;ORDER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;BY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;amp;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;to_bm25query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;to_tsvector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;english&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;PostgreSQL vector search&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;documents_bm25_idx&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ASC&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;LIMIT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;why-to_bm25query-requires-the-index-name&#34;&gt;Why &lt;code&gt;to_bm25query&lt;/code&gt; Requires the Index Name&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Unlike vector distance operators (where the distance between two vectors depends only on the two vectors themselves), the &lt;strong&gt;BM25 score of a document depends on corpus-wide statistics stored inside the BM25 index&lt;/strong&gt;:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Quick Start</title>
        <link>https://vchord.pgsty.com/cloud/getting-started/quick-start/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/getting-started/quick-start/</guid>
        <description>&lt;p&gt;This guide will help you get started with VectorChord Cloud. First, you need to sign up for a VectorChord Cloud account. If you haven&amp;rsquo;t done so already, you can sign up for a free account &lt;a href=&#34;https://vchord.pgsty.com/cloud/getting-started/sign-up/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;create-a-cluster&#34;&gt;Create a cluster&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-callout td-callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-lightbulb&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Tip&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;You can only create Enterprise plan after you bind a &lt;a href=&#34;https://vchord.pgsty.com/cloud/payment/credit-card/&#34;&gt;credit card&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;img class=&#34;td-image&#34; src=&#34;https://vchord.pgsty.com/cloud/images/after_login_in.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;p&gt;To create a new cluster, navigate to the VectorChord Cloud Console and click on the &amp;ldquo;Create Cluster&amp;rdquo; button.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Roadmap</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/community/roadmap/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/community/roadmap/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;We strongly suggest you explore our new &lt;a href=&#34;https://github.com/pgsty/vchord&#34;&gt;VectorChord&lt;/a&gt; implementation, offering enhanced stability and performance. Users are advised to transition to VectorChord. Refer to the &lt;a href=&#34;https://vchord.pgsty.com/docs/admin/migration/&#34;&gt;migration guide&lt;/a&gt; for assistance.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h2 id=&#34;midterm-plan&#34;&gt;Midterm Plan&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;sparse-vector-support&#34;&gt;Sparse Vector Support&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Sparse vectors have shown excellent performance in tasks such as RAG and text retrieval, and can improve the results of dense vectors. Therefore, we plan to support sparse vector indexing.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Scalability</title>
        <link>https://vchord.pgsty.com/docs/admin/scalability/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/admin/scalability/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;Background&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;background&#34;&gt;Background&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;High queries per second (QPS) vector search is essential for real-time applications such as recommendation engines, image recognition, and natural language processing. These applications demand rapid, efficient searches to deliver immediate results, which is critical for maintaining user engagement and operational effectiveness. By leveraging PostgreSQL for vector search, you not only benefit from its mature, robust relational capabilities and advanced indexing but also avoid the overhead of managing a separate, specialized vector database. This unified approach simplifies integration and reduces system complexity while still meeting the performance needs of modern applications.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Search</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/usage/search/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/usage/search/</guid>
        <description>&lt;p&gt;Get the nearest 5 neighbors to a vector&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-f4fb5253-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-f4fb5253-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vectors&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hnsw_ef_search&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;64&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ORDER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;BY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;[3,2,1]&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LIMIT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;a id=&#34;Operators&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;operators&#34;&gt;Operators&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;These operators are used for distance metrics:&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Name&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;-&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;squared Euclidean distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;#&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;negative dot product&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&amp;lt;=&amp;gt;&lt;/td&gt;&#xA;      &lt;td&gt;cosine distance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;For their definitions, see &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/getting-started/overview/#quick-start&#34;&gt;overview&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;Filter&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;filter&#34;&gt;Filter&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;For a given category, get the nearest 10 neighbors to a vector&lt;/p&gt;</description>
      </item>
    <item>
        <title>Text Analyzers &amp; Filters</title>
        <link>https://vchord.pgsty.com/bm25/tokenizer/text-analyzer/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/bm25/tokenizer/text-analyzer/</guid>
        <description>&lt;p&gt;A &lt;strong&gt;Text Analyzer&lt;/strong&gt; processes raw text through three sequential stages:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Character Filters (&lt;code&gt;character_filters&lt;/code&gt;)&lt;/strong&gt; — Zero or more character-level transformations on the full text string.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Pre-tokenizer (&lt;code&gt;pre_tokenizer&lt;/code&gt;)&lt;/strong&gt; — Exactly one splitter that breaks the string into initial tokens.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Token Filters (&lt;code&gt;token_filters&lt;/code&gt;)&lt;/strong&gt; — Zero or more token-level transformations, expansions, or filters.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-92049fed-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;12&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-92049fed-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;create_text_analyzer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;analyzer1&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;$$&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;character_filters&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;to_lowercase&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;unicode_normalization&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;nfkd&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;pre_tokenizer&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;unicode_segmentation&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;token_filters&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;skip_non_alphanumeric&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stopwords&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;nltk_english&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stemmer&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;english_porter2&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;$$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-callout td-callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-lightbulb&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Tip&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;You can test any text analyzer directly using &lt;code&gt;SELECT apply_text_analyzer(&#39;Sample text here&#39;, &#39;analyzer1&#39;);&lt;/code&gt; to inspect the resulting &lt;code&gt;TEXT[]&lt;/code&gt; array before wiring it to a model.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Upgrading</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/admin/upgrading/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/admin/upgrading/</guid>
        <description>&lt;h2 id=&#34;general-steps&#34;&gt;General Steps&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;If you update the extension to a new version, let&amp;rsquo;s say it&amp;rsquo;s &lt;code&gt;a.b.c&lt;/code&gt;. This command helps you to update the schema of extension:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-0258b931-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-0258b931-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;ALTER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;EXTENSION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vectors&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;UPDATE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- or&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;ALTER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;EXTENSION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vectors&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;UPDATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;a.b.c&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;If you&amp;rsquo;re upgrading from &lt;code&gt;0.1.x&lt;/code&gt;, please read &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/admin/upgrading/#upgrade-from-0-1-x&#34;&gt;Upgrading from 0.1.x&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;If you&amp;rsquo;re upgrading to &lt;code&gt;0.4.0&lt;/code&gt;, please read &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/admin/upgrading/#upgrade-to-0-4-0&#34;&gt;Upgrading to 0.4.0&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Execute the following SQL. It helps you do some maintenance work.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Adopters</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/community/adopters/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/community/adopters/</guid>
        <description>&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/immich-app/immich&#34;&gt;immich&lt;/a&gt; is a self-hosted photo and video backup solution directly from your mobile phone. it is &lt;a href=&#34;https://immich.app/docs/features/search&#34;&gt;using pgvecto.rs to search&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/theseus-rs/postgresql-embedded&#34;&gt;postgresql_embedded&lt;/a&gt; is a set of utilities for installing, running and managing PostgreSQL and extensions in Rust with support for &lt;a href=&#34;https://github.com/theseus-rs/postgresql-embedded/tree/main/postgresql_extensions#repositories&#34;&gt;installing pgvecto.rs&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;add-your-app-here&#34;&gt;Add your app here&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;If you are using &lt;code&gt;pgvecto.rs&lt;/code&gt; in your app, please &lt;a href=&#34;https://github.com/pgsty/vchord.pgsty.com/blob/main/content/pgvecto-rs/community/adopters.md&#34;&gt;edit this page&lt;/a&gt;. We are glad to get your feedback and help you to improve your experience with &lt;code&gt;pgvecto.rs&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Benchmarks</title>
        <link>https://vchord.pgsty.com/bm25/reference/benchmarks/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/bm25/reference/benchmarks/</guid>
        <description>&lt;h2 id=&#34;throughput-benchmark-qps-vs-elasticsearch-lucene-paradedb-pg-gin&#34;&gt;Throughput Benchmark (QPS vs. Elasticsearch, Lucene, ParadeDB, PG GIN)&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;VectorChord-BM25&amp;rsquo;s &lt;strong&gt;Block-WeakAnd&lt;/strong&gt; implementation with 128-document delta-bitpacked blocks and 1-byte fieldnorm quantization delivers up to &lt;strong&gt;3x higher QPS&lt;/strong&gt; than Tantivy-based PostgreSQL extensions (&lt;code&gt;ParadeDB / pg_search&lt;/code&gt;) and an order of magnitude higher QPS than native PostgreSQL &lt;code&gt;GIN&lt;/code&gt; indexes on Top-10 ranked queries:&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://vchord.pgsty.com/docs/images/es-vchord-bm25-rps.png&#34; alt=&#34;VectorChord-BM25 RPS Benchmark&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;img class=&#34;td-image&#34; src=&#34;https://vchord.pgsty.com/docs/images/es-vchord-bm25-ndcg10.png&#34; alt=&#34;VectorChord-BM25 NDCG@10 Benchmark&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;h3 id=&#34;why-vchord_bm25-achieves-high-qps&#34;&gt;Why &lt;code&gt;vchord_bm25&lt;/code&gt; Achieves High QPS&#xA;&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Zero Cross-Engine Serialization&lt;/strong&gt;: Unlike foreign-data-wrapper or external Tantivy/Lucene bridges, &lt;code&gt;vchord_bm25&lt;/code&gt; stores its segments directly inside PostgreSQL buffer pages (&lt;code&gt;PostgresRelation&lt;/code&gt;), avoiding tuple marshaling overhead.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Aggressive Block-Max Pruning&lt;/strong&gt;: On multi-term queries, Block-WeakAnd skips over 80%–95% of 128-document posting blocks without decompressing them once the Top-10 threshold stabilizes.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;256-Entry Precomputed BM25 Lookup Table&lt;/strong&gt;: Quantizing document length into a 1-byte &lt;code&gt;fieldnorm&lt;/code&gt; replaces expensive per-document floating-point math with a single array lookup.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;retrieval-accuracy-benchmark-ndcg10-on-beir--lotte&#34;&gt;Retrieval Accuracy Benchmark (&lt;code&gt;NDCG@10&lt;/code&gt; on BEIR &amp;amp; LoTTE)&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The table below (from our &lt;a href=&#34;https://vchord.pgsty.com/blog/post/supercharge-vector-search-with-colbert-rerank-in-postgresql/&#34;&gt;BEIR / LoTTE Hybrid Search &amp;amp; ColBERT Reranking evaluation&lt;/a&gt;) compares retrieval accuracy (&lt;code&gt;NDCG@10&lt;/code&gt;) across:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Benchmark with pgvector</title>
        <link>https://vchord.pgsty.com/docs/benchmark/pgvector/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/benchmark/pgvector/</guid>
        <description>&lt;p&gt;In this section, we compare VectorChord with pgvector, a PostgreSQL extension that provides vector similarity search capabilities. We will focus on four key metrics: QPS (Queries Per Second), Recall@100, Index Building Time, and Insertion Time. If you are interested in the details of our implementation, please refer to our blog &lt;a href=&#34;https://vchord.pgsty.com/blog/post/vector-search-over-postgresql-a-comparative-analysis-of-memory-and-disk-solutions/&#34;&gt;Vector Search Over PostgreSQL: A Comparative Analysis of Memory and Disk Solutions&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;qps--recall&#34;&gt;QPS &amp;amp; Recall&#xA;&lt;/h2&gt;&#xA;&lt;img src=&#34;https://vchord.pgsty.com/docs/images/gist-1m-top10.png&#34; alt=&#34;QPS on GIST 1m, Top 10&#34; style=&#34;width: 100%; height: auto; margin: 0 auto; display: block;&#34; /&gt;&#xA;&lt;p&gt;Here are some initial benchmark results for the GIST dataset, which consists of 1 million vectors in 960 dimensions. With equivalent recall, VectorChord&amp;rsquo;s QPS could be twice that of pgvector. More details will be provided in the Benchmark section.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Citus</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/integration/citus/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/integration/citus/</guid>
        <description>&lt;p&gt;&lt;code&gt;citus&lt;/code&gt; is a PostgreSQL extension that turns Postgres into a distributed database. &lt;code&gt;pgvecto.rs&lt;/code&gt; works well with &lt;code&gt;citus&lt;/code&gt; Here are the steps to enable vector search in a distributed PostgreSQL instance.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;citus&lt;/code&gt; can works on &lt;a href=&#34;https://docs.citusdata.com/en/latest/installation/single_node.html&#34;&gt;Single-Node&lt;/a&gt; and &lt;a href=&#34;https://docs.citusdata.com/en/latest/installation/multi_node.html&#34;&gt;Multi-Node&lt;/a&gt;, both of which are compatible with &lt;code&gt;pgvecto.rs&lt;/code&gt; natively.&lt;/p&gt;&#xA;&lt;h2 id=&#34;single-node-citus&#34;&gt;Single-Node Citus&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;First, prepare the dockerfile with &lt;code&gt;pgvecto.rs&lt;/code&gt; and &lt;code&gt;citus&lt;/code&gt; installed and attach them to PostgreSQL.&lt;/p&gt;&#xA;&lt;div class=&#34;td-callout td-callout--details td-callout--collapsible&#34; role=&#34;note&#34; data-td-callout-collapsible&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Details&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;&lt;code&gt;citus&lt;/code&gt; must be placed first in &lt;code&gt;shared_preload_libraries&lt;/code&gt; due to its restrictions.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Clusters</title>
        <link>https://vchord.pgsty.com/cloud/manage/cluster/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/manage/cluster/</guid>
        <description>&lt;p&gt;One or more clusters can be created in a project. A cluster is a collection of nodes that run a &lt;code&gt;Postgres&lt;/code&gt; cluster.&lt;/p&gt;&#xA;&lt;h2 id=&#34;create-a-cluster&#34;&gt;Create a cluster&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;To create a new cluster, navigate to the VectorChord Cloud Console and click on the &amp;ldquo;Create Cluster&amp;rdquo; button.&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://vchord.pgsty.com/cloud/images/after_login_in.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;img class=&#34;td-image&#34; src=&#34;https://vchord.pgsty.com/cloud/images/create_cluster.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;p&gt;You need to specify the following information:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Required:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Plan&lt;/strong&gt;: The plan you want to use for your cluster, for information about Cloud&amp;rsquo;s paid plan options, see &lt;a href=&#34;https://vchord.pgsty.com/cloud/pricing/price-plan/&#34;&gt;Cloud plans&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Cluster Name&lt;/strong&gt;: A unique name for your cluster.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Extension Settings&lt;/strong&gt;:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Extension&lt;/strong&gt;: We support two Vector Search extensions, &lt;a href=&#34;https://github.com/tensorchord/pgvecto.rs&#34;&gt;pgvectors&lt;/a&gt; and its successor &lt;a href=&#34;https://github.com/pgsty/vchord&#34;&gt;vectorchord&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;vectorchord&lt;/strong&gt;: Scalable, Fast, and Disk-friendly Vector search in Postgres&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;pgvectors&lt;/strong&gt;: Scalable, Low-latency and Hybrid-enabled Vector Search in Postgres. Revolutionize Vector Search, not Database.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;The vectorchord only support server resource with NVMe SSD.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Image&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;VectorChord, we provide a tag in a semantic version format, for example 16-v0.1.0:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;16 indicates the version number of Postgres major&lt;/li&gt;&#xA;&lt;li&gt;v0.1.0 indicates VectorChord version number&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;pgvecto.rs, we provide a tag in a semantic version format, for example 16-v0.4.0-vectors-exts:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;16 indicates the version number of Postgres major&lt;/li&gt;&#xA;&lt;li&gt;v0.4.0 indicates pgvecto.rs version number&lt;/li&gt;&#xA;&lt;li&gt;vectors indicates the installation location of pgvecto.rs scheme, optional vectors,extensions, public. Please choose public if you want to use VectorChord Cloud on AWS RDS. If you&amp;rsquo;re going to use fdw on Supabase, please choose extensions.&lt;/li&gt;&#xA;&lt;li&gt;exts indicates the cluster can install extensions from &lt;a href=&#34;https://pgt.dev/&#34;&gt;https://pgt.dev/&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Cloud Provider Settings&lt;/strong&gt;:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Cloud Provider&lt;/strong&gt;: The cloud provider where your cluster will be deployed, currently only AWS is supported.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Region&lt;/strong&gt;: The region where your cluster will be deployed.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Resource Settings&lt;/strong&gt;:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Type&lt;/strong&gt;: We provide two types of resources, &lt;code&gt;Performance&lt;/code&gt; and &lt;code&gt;Capacity&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Server Resource&lt;/strong&gt;:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Performance&lt;/strong&gt;:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;1C/2G&lt;/strong&gt;: Free tier, 1 core CPU, 2GB memory and 3Gi disk space.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;2C/8G&lt;/strong&gt;: Enterprise tier, 2 core CPU, 8GB memory and 15Gi disk space.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;2C/16G&lt;/strong&gt;: Enterprise tier, 2 core CPU, 16GB memory and 15Gi disk space.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;4C/32G&lt;/strong&gt;: Enterprise tier, 4 core CPU, 32GB memory and 90Gi disk space.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Capacity&lt;/strong&gt;:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;4C/32G NVMe SSD&lt;/strong&gt;: Enterprise tier, 4 core CPU, 32GB memory and 850Gi NVMe SSD disk space.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Postgres Settings&lt;/strong&gt;:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Database Name&lt;/strong&gt;: The name of the database that you will store vector data in.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Enable Connection Pooler&lt;/strong&gt;: (default: false): Enable the connection pooler for your cluster.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Enable Restore Config&lt;/strong&gt;: (default: false): Enable the restore config for your backup created in other clusters.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Optional&lt;/strong&gt;:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Disk Size&lt;/strong&gt;: Postgres PGData disk size, will change the default disk size.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Instances&lt;/strong&gt;: The number of instances in the cluster. The default is 1.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;Currently, vector index not support streaming replication.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>Beyond Text: Unlock OCR-Free RAG in PostgreSQL with Modal &amp; VectorChord</title>
        <link>https://vchord.pgsty.com/docs/use-case/colqwen2-modal/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/use-case/colqwen2-modal/</guid>
        <description>&lt;p&gt;Building effective Retrieval-Augmented Generation (RAG) systems for documents often feels like wrestling with messy, complex pipelines. Especially when dealing with PDFs or scanned images, traditional methods rely heavily on Optical Character Recognition (OCR) and layout analysis. These steps can be slow, error-prone, and often lose crucial visual context like tables, figures, and formatting. &lt;strong&gt;But what if you could query documents based on &lt;em&gt;how they look&lt;/em&gt;, not just the extracted text?&lt;/strong&gt;&lt;/p&gt;</description>
      </item>
    <item>
        <title>Filtered Search &amp; Prefiltering</title>
        <link>https://vchord.pgsty.com/bm25/usage/filtering/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/bm25/usage/filtering/</guid>
        <description>&lt;p&gt;Real-world applications frequently combine full-text BM25 ranking with structured relational filters (such as &lt;code&gt;category_id = 5&lt;/code&gt;, &lt;code&gt;tenant_id = &#39;acme&#39;&lt;/code&gt;, or date ranges). &lt;code&gt;vchord_bm25&lt;/code&gt; supports three strategies for filtered BM25 search.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-post-filtering-vs-pre-filtering&#34;&gt;1. Post-Filtering vs. Pre-Filtering&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;When you execute a query with a &lt;code&gt;WHERE&lt;/code&gt; clause and &lt;code&gt;ORDER BY embedding &amp;lt;&amp;amp;&amp;gt; to_bm25query(...) LIMIT K&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-110cf205-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-110cf205-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;passage&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;documents&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;WHERE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;category&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;database&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;ORDER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;BY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;amp;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;to_bm25query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;documents_embedding_bm25&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tokenize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;PostgreSQL BM25&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;my_tokenizer&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;LIMIT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;There are two ways &lt;code&gt;vchord_bm25&lt;/code&gt; can evaluate the &lt;code&gt;WHERE&lt;/code&gt; predicate:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Graph Index</title>
        <link>https://vchord.pgsty.com/docs/usage/graph-index/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/usage/graph-index/</guid>
        <description>&lt;span class=&#34;td-badge td-badge--info&#34;&gt;since v0.5.0&lt;/span&gt;&#xA;&lt;p&gt;VectorChord&amp;rsquo;s index type &lt;code&gt;vchordg&lt;/code&gt; is a disk-based graph index. It has low memory consumption.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s start by creating a table named &lt;code&gt;items&lt;/code&gt; with an &lt;code&gt;embedding&lt;/code&gt; column of type &lt;code&gt;vector(n)&lt;/code&gt;, and then populate it with sample data.&lt;/p&gt;&#xA;&lt;p&gt;To create a &lt;code&gt;vchordg&lt;/code&gt; index, you can use the following SQL.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-af388541-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-af388541-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;INDEX&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;USING&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vchordg&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector_l2_ops&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-callout td-callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-lightbulb&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Tip&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This feature is in preview.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Image Search</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/use-case/image-search/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/use-case/image-search/</guid>
        <description>&lt;p&gt;Image intelligent search, also known as content-based image retrieval, goes beyond traditional keyword-based search and enables users to search for images based on their &lt;strong&gt;visual content&lt;/strong&gt;. For example, you could search images that &lt;strong&gt;contain&lt;/strong&gt; a red mushroom (image from &lt;a href=&#34;https://immich.app&#34;&gt;immich&lt;/a&gt;):&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://immich.app/img/screenshot-light.webp&#34; alt=&#34;image-search&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;p&gt;The feature looks like a magic because it allows you to search for images that you don&amp;rsquo;t have keywords for. The search engine understands the content of the images and videos and can find the ones that are similar to the query.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Kubernetes</title>
        <link>https://vchord.pgsty.com/docs/admin/kubernetes/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/admin/kubernetes/</guid>
        <description>&lt;p&gt;If you want to use &lt;code&gt;vectorchord&lt;/code&gt; in PostgreSQL which is running in Kubernetes, we provide a tutorial to help you. In this tutorial, we will use &lt;a href=&#34;https://cloudnative-pg.io/&#34;&gt;CloudNative-PG&lt;/a&gt; to deploy PostgreSQL cluster in Kubernetes.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;Requirements&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;requirements&#34;&gt;Requirements&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Name&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Version&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://helm.sh/&#34;&gt;helm&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&amp;gt;= 2.4.1&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://kubernetes.io/docs/tasks/tools/&#34;&gt;kubectl&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&amp;gt;= 1.14&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://kubernetes.io/&#34;&gt;Kubernetes&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&amp;gt;= 1.24.0&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://kubernetes.io/&#34;&gt;Kubernetes (Image Volume Extensions)&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&amp;gt;= 1.31.0&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;install-cloudnative-pg&#34;&gt;Install CloudNative-PG&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;We use &lt;a href=&#34;https://cloudnative-pg.io/&#34;&gt;CloudNative-PG (cnpg)&lt;/a&gt; to deploy PostgreSQL cluster in Kubernetes. You can install it by &lt;a href=&#34;https://helm.sh/docs/intro/install/&#34;&gt;helm&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Logical replication</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/admin/logical_replication/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/admin/logical_replication/</guid>
        <description>&lt;p&gt;Logical replication is a feature in PostgreSQL that enables the replication of individual database objects or a subset of data from one PostgreSQL database to another.&lt;/p&gt;&#xA;&lt;p&gt;With logical replication, you can selectively replicate specific tables, databases, or even specific rows based on predefined replication rules. This provides more flexibility compared to physical replication, where the entire database cluster is replicated. It allows you to design custom replication topologies and replicate only the data that is necessary for your use case.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Monitoring</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/usage/monitoring/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/usage/monitoring/</guid>
        <description>&lt;p&gt;We provide a view &lt;code&gt;pg_vector_index_stat&lt;/code&gt; to monitor the progress of indexing.&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Column&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;tablerelid&lt;/td&gt;&#xA;      &lt;td&gt;oid&lt;/td&gt;&#xA;      &lt;td&gt;The oid of the table.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;indexrelid&lt;/td&gt;&#xA;      &lt;td&gt;oid&lt;/td&gt;&#xA;      &lt;td&gt;The oid of the index.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;tablename&lt;/td&gt;&#xA;      &lt;td&gt;name&lt;/td&gt;&#xA;      &lt;td&gt;The name of the table.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;indexname&lt;/td&gt;&#xA;      &lt;td&gt;name&lt;/td&gt;&#xA;      &lt;td&gt;The name of the index.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;idx_status&lt;/td&gt;&#xA;      &lt;td&gt;text&lt;/td&gt;&#xA;      &lt;td&gt;Its value is &lt;code&gt;NORMAL&lt;/code&gt; or &lt;code&gt;UPGRADE&lt;/code&gt;. Whether this index is normal or needs upgrade.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;idx_indexing&lt;/td&gt;&#xA;      &lt;td&gt;bool&lt;/td&gt;&#xA;      &lt;td&gt;Not null if &lt;code&gt;idx_status&lt;/code&gt; is &lt;code&gt;NORMAL&lt;/code&gt;. Whether the background thread is indexing.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;idx_tuples&lt;/td&gt;&#xA;      &lt;td&gt;int8&lt;/td&gt;&#xA;      &lt;td&gt;Not null if &lt;code&gt;idx_status&lt;/code&gt; is &lt;code&gt;NORMAL&lt;/code&gt;. The number of tuples.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;idx_sealed&lt;/td&gt;&#xA;      &lt;td&gt;int8[]&lt;/td&gt;&#xA;      &lt;td&gt;Not null if &lt;code&gt;idx_status&lt;/code&gt; is &lt;code&gt;NORMAL&lt;/code&gt;. The number of tuples in each sealed segment.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;idx_growing&lt;/td&gt;&#xA;      &lt;td&gt;int8[]&lt;/td&gt;&#xA;      &lt;td&gt;Not null if &lt;code&gt;idx_status&lt;/code&gt; is &lt;code&gt;NORMAL&lt;/code&gt;. The number of tuples in each growing segment.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;idx_write&lt;/td&gt;&#xA;      &lt;td&gt;int8&lt;/td&gt;&#xA;      &lt;td&gt;Not null if &lt;code&gt;idx_status&lt;/code&gt; is &lt;code&gt;NORMAL&lt;/code&gt;. The number of tuples in write buffer.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;idx_size&lt;/td&gt;&#xA;      &lt;td&gt;int8&lt;/td&gt;&#xA;      &lt;td&gt;Not null if &lt;code&gt;idx_status&lt;/code&gt; is &lt;code&gt;NORMAL&lt;/code&gt;. The byte size for all the segments.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;idx_options&lt;/td&gt;&#xA;      &lt;td&gt;text&lt;/td&gt;&#xA;      &lt;td&gt;Not null if &lt;code&gt;idx_status&lt;/code&gt; is &lt;code&gt;NORMAL&lt;/code&gt;. The configuration of the index.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;td-callout td-callout--details td-callout--collapsible&#34; role=&#34;note&#34; data-td-callout-collapsible&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;span class=&#34;td-callout__label&#34;&gt;&lt;code&gt;idx_options&lt;/code&gt; Details&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;The &lt;code&gt;idx_options&lt;/code&gt; is a JSON string that includes vector, segment, optimization, and indexing options. Examples below:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-ce4e01be-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;json&#34; data-td-line-count=&#34;26&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-ce4e01be-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;vector&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;dimensions&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;256&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;distance&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;L2&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;kind&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;F32&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;segment&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;max_growing_segment_size&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;20000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;max_sealed_segment_size&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1000000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;optimizing&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;sealing_secs&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;60&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;sealing_size&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;delete_threshold&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;optimizing_threads&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;indexing&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;hnsw&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;m&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;ef_construction&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;300&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;quantization&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nt&#34;&gt;&amp;#34;trivial&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Why not a specialty vector database?</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/faqs/comparison-with-specialized-vectordb/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/faqs/comparison-with-specialized-vectordb/</guid>
        <description>&lt;p&gt;Read our complete blog at &lt;a href=&#34;https://vchord.pgsty.com/blog/post/do-we-really-need-a-specialized-vector-database-2023/&#34;&gt;Do we really need a specialized vector database? (2023) | vchord.pgsty.com&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Imagine this, your existing data is stored in a Postgres database, and you want to use a vector database to do some vector similarity search. You have to move your data from Postgres to the vector database, and you have to maintain two databases at the same time. This is not a good idea.&lt;/p&gt;&#xA;&lt;p&gt;Why not just use Postgres to do the vector similarity search? This is the reason why we build &lt;code&gt;pgvecto.rs&lt;/code&gt;. The user journey is like this:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Quick Start</title>
        <link>https://vchord.pgsty.com/bm25/getting-started/quick-start/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/bm25/getting-started/quick-start/</guid>
        <description>&lt;p&gt;This guide walks through creating a table, tokenizing documents, building a &lt;code&gt;bm25&lt;/code&gt; index, and executing Top-K BM25 queries.&lt;/p&gt;&#xA;&lt;h2 id=&#34;workflow-a-bm25vector--pg_tokenizer-v01--v03&#34;&gt;Workflow A: &lt;code&gt;bm25vector&lt;/code&gt; + &lt;code&gt;pg_tokenizer&lt;/code&gt; (&lt;code&gt;v0.1&lt;/code&gt; – &lt;code&gt;v0.3&lt;/code&gt;)&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In released versions &lt;code&gt;v0.1.0&lt;/code&gt; through &lt;code&gt;v0.3.0&lt;/code&gt;, &lt;code&gt;vchord_bm25&lt;/code&gt; pairs with &lt;code&gt;pg_tokenizer&lt;/code&gt; to tokenize text into a &lt;code&gt;bm25vector&lt;/code&gt; column.&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-enable-extensions-and-configure-search_path&#34;&gt;1. Enable Extensions and Configure &lt;code&gt;search_path&lt;/code&gt;&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-0e03a75f-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;4&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-0e03a75f-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;EXTENSION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;IF&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NOT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;EXISTS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pg_tokenizer&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CASCADE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;EXTENSION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;IF&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NOT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;EXISTS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vchord_bm25&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CASCADE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;search_path&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;$user&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25_catalog&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tokenizer_catalog&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;2-create-a-tokenizer&#34;&gt;2. Create a Tokenizer&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Use &lt;code&gt;create_tokenizer&lt;/code&gt; with the built-in &lt;code&gt;llmlingua2&lt;/code&gt; (or &lt;code&gt;bert_base_uncased&lt;/code&gt;) model:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Search Options</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/reference/search_options/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/reference/search_options/</guid>
        <description>&lt;p&gt;Search options are specified by &lt;a href=&#34;https://www.postgresql.org/docs/current/config-setting.html&#34;&gt;PostgreSQL GUC&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;options-for-ivf&#34;&gt;Options for &lt;code&gt;ivf&lt;/code&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;These options only work for IVF algorithm.&#xA;Refer to &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/usage/indexing/#inverted-file-index-ivf&#34;&gt;Indexing&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Option&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Range&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Default&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors.ivf_nprobe&lt;/td&gt;&#xA;      &lt;td&gt;integer&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;[1, 1_000_000]&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;10&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Number of lists to scan.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;options-for-hnsw&#34;&gt;Options for &lt;code&gt;hnsw&lt;/code&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;These options only work for HNSW algorithm.&#xA;Refer to &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/usage/indexing/#hierarchical-navigable-small-world-graph-hnsw&#34;&gt;Indexing&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Option&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Range&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Default&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;vectors.hnsw_ef_search&lt;/td&gt;&#xA;      &lt;td&gt;integer&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;[1, 65535]&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;100&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Search scope of HNSW.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;other-options&#34;&gt;Other Options&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Query options for search mode:&#xA;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Sparse Vector: `svector`</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/reference/vector-types/svector/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/reference/vector-types/svector/</guid>
        <description>&lt;span class=&#34;td-badge td-badge--info&#34;&gt;since v0.3.0&lt;/span&gt;&#xA;&lt;p&gt;Unlike dense vectors, sparse vectors are very high-dimensional but contain few non-zero values.&lt;/p&gt;&#xA;&lt;p&gt;Typically, sparse vectors can be created from:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Word co-occurrence matrices&lt;/li&gt;&#xA;&lt;li&gt;Term frequency-inverse document frequency (TF-IDF) vectors&lt;/li&gt;&#xA;&lt;li&gt;User-item interaction matrices&lt;/li&gt;&#xA;&lt;li&gt;Network adjacency matrices&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Sparse vectors in &lt;code&gt;pgvecto.rs&lt;/code&gt; are called &lt;code&gt;svector&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s an example of creating a table with a svector column and inserting values:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e3b5e2c4-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;6&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e3b5e2c4-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TABLE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bigserial&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;PRIMARY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;svector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NOT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NULL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;INSERT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;INTO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;VALUES&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;[0.1,0,0,0,0,0,0,0,0,0]&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;[0,0,0,0,0,0,0,0,0,0.5]&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Index can be created on &lt;code&gt;svector&lt;/code&gt; type as well.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Tokenization Models</title>
        <link>https://vchord.pgsty.com/bm25/tokenizer/models/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/bm25/tokenizer/models/</guid>
        <description>&lt;p&gt;In &lt;code&gt;pg_tokenizer&lt;/code&gt;, a &lt;strong&gt;Model&lt;/strong&gt; maps string tokens (or raw text) to integer token IDs (&lt;code&gt;INT[]&lt;/code&gt;). You can choose from four built-in pretrained models, train a custom vocabulary model directly on your PostgreSQL table, import any HuggingFace &lt;code&gt;tokenizer.json&lt;/code&gt;, or use a Lindera morphological model.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-built-in-pretrained-models&#34;&gt;1. Built-in Pretrained Models&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Model Name&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Source / Architecture&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Requires &lt;code&gt;text_analyzer&lt;/code&gt;?&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Memory Footprint&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Best For&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;llmlingua2&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://huggingface.co/microsoft/llmlingua-2-xlm-roberta-large-meetingbank&#34;&gt;&lt;code&gt;microsoft/llmlingua-2-xlm-roberta-large-meetingbank&lt;/code&gt;&lt;/a&gt; (XLM-RoBERTa multilingual subword)&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;No (forbidden)&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;~200 MB (default preloaded)&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Multilingual general text out of the box without training a custom vocabulary.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;bert_base_uncased&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://huggingface.co/google-bert/bert-base-uncased&#34;&gt;&lt;code&gt;google-bert/bert-base-uncased&lt;/code&gt;&lt;/a&gt; (WordPiece, 30,522 vocab)&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;No (forbidden)&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;~15 MB&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;General English text; fast startup and compact vocabulary.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;wiki_tocken&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://huggingface.co/Snowolf/wiki-tocken&#34;&gt;&lt;code&gt;Snowolf/wiki-tocken&lt;/code&gt;&lt;/a&gt; (Built-in English Wikipedia token dictionary)&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Yes (required)&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;~30 MB&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;English full-text search combined with custom stemmers, stopwords, and synonyms.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;gemma2b&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://huggingface.co/google/gemma-2b&#34;&gt;&lt;code&gt;google/gemma-2b&lt;/code&gt;&lt;/a&gt; (SentencePiece BPE, 256k vocab)&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;No (forbidden)&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;~100 MB&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Code, technical identifiers, and multilingual LLM workloads.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h3 id=&#34;example-using-bert_base_uncased-or-llmlingua2&#34;&gt;Example: Using &lt;code&gt;bert_base_uncased&lt;/code&gt; or &lt;code&gt;llmlingua2&lt;/code&gt;&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-3e643452-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-3e643452-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;create_tokenizer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;bert_tok&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;$$&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;bert_base_uncased&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;$$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tokenize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;VectorChord-BM25 brings Block-WeakAnd to PostgreSQL.&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;bert_tok&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;2-custom-corpus-models-create_custom_model&#34;&gt;2. Custom Corpus Models (&lt;code&gt;create_custom_model&lt;/code&gt;)&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;For maximum BM25 accuracy and minimal memory footprint, you can build a &lt;strong&gt;custom vocabulary model&lt;/strong&gt; directly from your own table column. Unlike subword LLM tokenizers (which split rare domain words into multiple sub-tokens), a custom model assigns a dedicated 1:1 integer ID to every unique normalized token produced by your &lt;code&gt;text_analyzer&lt;/code&gt;—and weighs only a few megabytes in memory.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Trademark Policy</title>
        <link>https://vchord.pgsty.com/about/trademark/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/about/trademark/</guid>
        <description>&lt;h2 id=&#34;statement-of-independence&#34;&gt;Statement of Independence&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;pgsty/vchord&lt;/code&gt; and &lt;code&gt;vchord.pgsty.com&lt;/code&gt; are maintained by the &lt;a href=&#34;https://pigsty.io/&#34;&gt;Pigsty&lt;/a&gt; community. Neither &lt;code&gt;pgsty/vchord&lt;/code&gt; nor &lt;code&gt;vchord.pgsty.com&lt;/code&gt; is affiliated with, endorsed by, or sponsored by &lt;strong&gt;TensorChord Inc.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;third-party-trademarks&#34;&gt;Third-Party Trademarks&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;VectorChord&lt;/strong&gt;, &lt;strong&gt;pgvecto.rs&lt;/strong&gt;, and &lt;strong&gt;TensorChord&lt;/strong&gt; are names and marks associated with TensorChord Inc. They are used on this site solely for nominative fair use to identify the upstream open-source projects, extension names (&lt;code&gt;vchord&lt;/code&gt;, &lt;code&gt;vectors&lt;/code&gt;), SQL access methods (&lt;code&gt;vchordrq&lt;/code&gt;, &lt;code&gt;vchordg&lt;/code&gt;), and historical engineering articles.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt; and &lt;strong&gt;Postgres&lt;/strong&gt; are registered trademarks of the PostgreSQL Community Association of Canada.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Linux&lt;/strong&gt; is the registered trademark of Linus Torvalds in the U.S. and other countries.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Amazon Web Services (AWS)&lt;/strong&gt;, &lt;strong&gt;Cloudflare&lt;/strong&gt;, &lt;strong&gt;Docker&lt;/strong&gt;, and other product or company names referenced in benchmarks and deployment guides are trademarks of their respective owners.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>Vchord Suite</title>
        <link>https://vchord.pgsty.com/docs/getting-started/vectorchord-suite/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/getting-started/vectorchord-suite/</guid>
        <description>&lt;p&gt;Retrieval-Augmented Generation (RAG) is revolutionizing our interaction with vast datasets and language models. RAG systems offer more precise, contextually aware, and current answers by retrieving pertinent information before generating responses. Nonetheless, constructing robust, scalable, and efficient RAG pipelines poses considerable challenges, particularly for production use.&lt;/p&gt;&#xA;&lt;p&gt;Many solutions feature complex architectures, using distinct databases for vector search, keyword search, and primary data storage. This commonly results in data synchronization challenges, greater infrastructure complexity, and higher operational costs.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Authorization</title>
        <link>https://vchord.pgsty.com/cloud/manage/authorization/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/manage/authorization/</guid>
        <description>&lt;p&gt;Topics related to role-based access control (RBAC) on your VectorChord Cloud clusters.&lt;/p&gt;&#xA;&lt;h2 id=&#34;user-roles&#34;&gt;User Roles&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;We provide two types of roles for the project: &lt;code&gt;Owner&lt;/code&gt; and &lt;code&gt;Member&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;Owner&lt;/code&gt;: The owner has full access to the project. The owner can invite members, create or delete clusters, and view the billing information.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Member&lt;/code&gt;: The member has read-only access to the project. The member can view the cluster information, but cannot create or delete clusters.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;api-key-roles&#34;&gt;API Key Roles&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;API Key provide more fine-grained control over access to resources by assigning roles with specific permissions to users within the projects. We provide two types of roles for the API Key: &lt;code&gt;Owner&lt;/code&gt; and &lt;code&gt;Member&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Benchmarks</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/faqs/benchmark/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/faqs/benchmark/</guid>
        <description>&lt;p&gt;&lt;code&gt;pgvecto.rs&lt;/code&gt; has been focused on performance from the beginning. We have continuously monitored the performance of &lt;code&gt;pgvecto.rs&lt;/code&gt; and compared it with other vector search libraries. The following benchmark results are from January 2024.&lt;/p&gt;&#xA;&lt;p&gt;The test is done on Google Cloud &lt;a href=&#34;https://cloud.google.com/compute/docs/general-purpose-machines#n2_series&#34;&gt;n2-standard-8&lt;/a&gt; (8 vCPUs, 32 GB RAM) with the &lt;code&gt;laion-768-5m-ip&lt;/code&gt; dataset.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;pgvecto-rs-v-s-pgvector&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;pgvectors-vs-pgvector&#34;&gt;&lt;code&gt;pgvecto.rs&lt;/code&gt; v.s. &lt;code&gt;pgvector&lt;/code&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;With the HNSW index, &lt;code&gt;pgvecto.rs&lt;/code&gt; can achieve &lt;strong&gt;2.5x&lt;/strong&gt; responses per second as &lt;code&gt;pgvector&lt;/code&gt; can do with a slightly better precision of around 97%. This advantage increases when higher precision is required.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Benchmark with Elasticsearch</title>
        <link>https://vchord.pgsty.com/docs/benchmark/elasticsearch/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/benchmark/elasticsearch/</guid>
        <description>&lt;p&gt;Here we present a comprehensive benchmark comparing our implementation of VectorChord-BM25 with ElasticSearch, focusing on two key metrics: QPS (Queries Per Second) and NDCG@10 (Normalized Discounted Cumulative Gain at rank 10). If you are interested in the details of our implementation, please refer to our blog &lt;a href=&#34;https://vchord.pgsty.com/blog/post/vectorchord-bm25-revolutionize-postgresql-search-with-bm25-ranking-3x-faster-than-elasticsearch/&#34;&gt;VectorChord-BM25: Revolutionize PostgreSQL Search with BM25 Ranking — 3x Faster Than ElasticSearch&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;RPS&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;rps&#34;&gt;RPS&#xA;&lt;/h2&gt;&#xA;&lt;img src=&#34;https://vchord.pgsty.com/docs/images/es-vchord-bm25-rps.png&#34; alt=&#34;RPS&#34; style=&#34;width: 100%; height: auto; margin: 0 auto; display: block;&#34; /&gt;&#xA;&lt;p&gt;We compare the Top1000 Queries Per Second (QPS)—a metric that measures how many queries a system can process per second while retrieving the top 1000 results for each query—between our implementation and ElasticSearch across various datasets from &lt;a href=&#34;https://github.com/xhluca/bm25-benchmarks&#34;&gt;bm25-benchmarks&lt;/a&gt;. On average, our implementation achieves &lt;strong&gt;3 times higher QPS&lt;/strong&gt; compared to ElasticSearch across the tested datasets, showcasing its efficiency and scalability.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Binary Vector: `bvector`</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/reference/vector-types/bvector/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/reference/vector-types/bvector/</guid>
        <description>&lt;span class=&#34;td-badge td-badge--info&#34;&gt;since v0.3.0&lt;/span&gt;&#xA;&lt;p&gt;The &lt;code&gt;bvector&lt;/code&gt; type is a binary vector type in pgvecto.rs. It represents a binary vector, which is a vector where each component can take on two possible values, typically 0 and 1.&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s an example of creating a table with a bvector column and inserting values:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-aa70cc09-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;6&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-aa70cc09-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TABLE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bigserial&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;PRIMARY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bvector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NOT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NULL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;INSERT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;INTO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;VALUES&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;[1,0,1]&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;[0,1,0]&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Index can be created on &lt;code&gt;bvector&lt;/code&gt; type as well.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Foreign data wrapper (FDW)</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/admin/fdw/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/admin/fdw/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://wiki.postgresql.org/wiki/Foreign_data_wrappers&#34;&gt;Foreign data wrapper(FDW)&lt;/a&gt; is an extension in PostgreSQL that allows you to access and query data stored in remote databases as if they were local tables. FDW provides a way to integrate and interact with different data sources.&lt;/p&gt;&#xA;&lt;p&gt;With the FDW extension, you can define foreign tables in your local PostgreSQL database that mirror the structure of tables in remote databases. These foreign tables act as proxies or wrappers for the remote data, enabling you to perform SELECT, INSERT, UPDATE, and DELETE operations on them, just like regular tables in PostgreSQL.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Hybrid Search (BM25 &#43; VectorChord)</title>
        <link>https://vchord.pgsty.com/bm25/usage/hybrid-search/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/bm25/usage/hybrid-search/</guid>
        <description>&lt;p&gt;Modern retrieval pipelines combine &lt;strong&gt;dense vector search&lt;/strong&gt; (&lt;a href=&#34;https://vchord.pgsty.com/docs/&#34;&gt;&lt;code&gt;vchord&lt;/code&gt;&lt;/a&gt;, which captures semantic similarity) with &lt;strong&gt;sparse lexical BM25 search&lt;/strong&gt; (&lt;code&gt;vchord_bm25&lt;/code&gt;, which captures exact keyword, identifier, and rare-term matches). Because both extensions run natively inside PostgreSQL, you can execute &lt;strong&gt;end-to-end hybrid search in a single SQL query&lt;/strong&gt; with zero external orchestration.&lt;/p&gt;&#xA;&lt;h2 id=&#34;schema-setup-for-hybrid-search&#34;&gt;Schema Setup for Hybrid Search&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-0871c689-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;22&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-0871c689-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;EXTENSION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;IF&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NOT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;EXISTS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vchord&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CASCADE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;EXTENSION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;IF&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NOT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;EXISTS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pg_tokenizer&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CASCADE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;EXTENSION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;IF&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NOT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;EXISTS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vchord_bm25&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CASCADE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;search_path&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;$user&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25_catalog&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tokenizer_catalog&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- 1. Create a BM25 tokenizer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;create_tokenizer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;bert&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;$$&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;bert_base_uncased&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;$$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- 2. Create a table storing both dense vectors and sparse bm25vectors&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TABLE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;chunks&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;SERIAL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;PRIMARY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;TEXT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NOT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;NULL&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dense_emb&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;768&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25_emb&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25vector&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- 3. Create VectorChord dense index (vchordrq) and BM25 lexical index (bm25)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;INDEX&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;chunks_dense_idx&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;chunks&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;USING&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vchordrq&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dense_emb&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector_l2_ops&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;INDEX&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;chunks_bm25_idx&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;chunks&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;USING&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25_emb&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25_ops&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;method-1-reciprocal-rank-fusion-rrf-in-pure-sql&#34;&gt;Method 1: Reciprocal Rank Fusion (RRF) in Pure SQL&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Reciprocal Rank Fusion (RRF)&lt;/strong&gt; combines rankings from multiple retrieval systems without requiring score calibration between L2/cosine distance and BM25 scores:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Multi Tenancy</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/use-case/multi-tenancy/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/use-case/multi-tenancy/</guid>
        <description>&lt;p&gt;Multi-tenancy is essential for SaaS applications, allowing a single instance to serve multiple users or groups while ensuring data privacy and security. This blog outlines the design and implementation a simple multi-tenant vector search system with pgvecto.rs.&lt;/p&gt;&#xA;&lt;h2 id=&#34;designing-the-database-schema&#34;&gt;Designing the Database Schema&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The success of user-based isolation in multi-tenant systems hinges on a well-structured database schema:&lt;/p&gt;&#xA;&lt;h3 id=&#34;users-and-documents&#34;&gt;Users and Documents&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Each user is identified by a unique user_id, which directly links them to their documents for private access. The documents table contains each user&amp;rsquo;s documents, each with a distinct id, title, and content. Additional metadata can be included in the documents table to improve search functionality. The user_id is linked to the documents instead of chunk embeddings to replicate real-world scenarios more accurately.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Multilingual Recipes &amp; Limitations</title>
        <link>https://vchord.pgsty.com/bm25/tokenizer/multilingual/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/bm25/tokenizer/multilingual/</guid>
        <description>&lt;p&gt;This page provides production-ready tokenization recipes for English, Chinese, and Japanese full-text BM25 search, followed by important operational limitations to keep in mind.&lt;/p&gt;&#xA;&lt;h2 id=&#34;recipe-1-english-with-stemming--stopwords-wiki_tocken&#34;&gt;Recipe 1: English with Stemming &amp;amp; Stopwords (&lt;code&gt;wiki_tocken&lt;/code&gt;)&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Combines Unicode word segmentation, NLTK stopwords removal, and Porter2 stemming with the built-in Wikipedia vocabulary (&lt;code&gt;wiki_tocken&lt;/code&gt;):&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-0c048272-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;13&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-0c048272-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;create_tokenizer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;eng_wiki&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;$$&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;wiki_tocken&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text_analyzer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;character_filters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;to_lowercase&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text_analyzer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pre_tokenizer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;unicode_segmentation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text_analyzer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;token_filters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;skip_non_alphanumeric&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text_analyzer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;token_filters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stopwords&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;words&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;nltk_english&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text_analyzer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;token_filters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stemmer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;kind&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;english_porter2&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;$$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tokenize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;PostgreSQL databases are running analytical and vector workloads.&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;eng_wiki&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;recipe-2-english-custom-corpus-model-with-trigger&#34;&gt;Recipe 2: English Custom Corpus Model with Trigger&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;From the upstream &lt;a href=&#34;https://github.com/pgsty/pg_tokenizer/blob/main/docs/03-examples.md&#34;&gt;&lt;code&gt;pg_tokenizer&lt;/code&gt; examples&lt;/a&gt;, this workflow builds a domain-specific English vocabulary from your &lt;code&gt;documents&lt;/code&gt; table and keeps embeddings updated automatically via trigger:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Quantization</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/usage/quantization/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/usage/quantization/</guid>
        <description>&lt;p&gt;Quantization is a technique to reduce the memory consumption and computation complexity with the affordable decrease in precision. In the context of vector search, there are mainly two types of quantization: production quantization and scalar quantization.&lt;/p&gt;&#xA;&lt;h2 id=&#34;production-quantization&#34;&gt;Production Quantization&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Production quantization is a method that trains several clustering models on the dataset and maps each vector to a list of cluster center indexes. It is commonly used address the problem of excessive memory usage with high-dimensional data.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Quantization Types</title>
        <link>https://vchord.pgsty.com/docs/usage/quantization-types/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/usage/quantization-types/</guid>
        <description>&lt;span class=&#34;td-badge td-badge--info&#34;&gt;since v1.1.0&lt;/span&gt;&#xA;&lt;p&gt;Quantization can be applied not only to indexes but also directly to vectors. To this end, VectorChord provides data types for quantized vectors.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;rabitq8&lt;/code&gt; is the data type of a quantized vector. For the same dimension, its cost is about &lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;\frac{1}{4}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:1.1901em;vertical-align:-0.345em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;&lt;span class=&#34;mopen nulldelimiter&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mfrac&#34;&gt;&lt;span class=&#34;vlist-t vlist-t2&#34;&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.8451em;&#34;&gt;&lt;span style=&#34;top:-2.655em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:3em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;katex-sizing reset-size6 size3 mtight&#34;&gt;&lt;span class=&#34;mord mtight&#34;&gt;&lt;span class=&#34;mord mtight&#34;&gt;4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;top:-3.23em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:3em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;frac-line&#34; style=&#34;border-bottom-width:0.04em;&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;top:-3.394em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:3em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;katex-sizing reset-size6 size3 mtight&#34;&gt;&lt;span class=&#34;mord mtight&#34;&gt;&lt;span class=&#34;mord mtight&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-s&#34;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.345em;&#34;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mclose nulldelimiter&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; that of a full-precision vector (&lt;code&gt;vector&lt;/code&gt;) and &lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;\frac{1}{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:1.1901em;vertical-align:-0.345em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;&lt;span class=&#34;mopen nulldelimiter&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mfrac&#34;&gt;&lt;span class=&#34;vlist-t vlist-t2&#34;&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.8451em;&#34;&gt;&lt;span style=&#34;top:-2.655em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:3em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;katex-sizing reset-size6 size3 mtight&#34;&gt;&lt;span class=&#34;mord mtight&#34;&gt;&lt;span class=&#34;mord mtight&#34;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;top:-3.23em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:3em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;frac-line&#34; style=&#34;border-bottom-width:0.04em;&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;top:-3.394em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:3em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;katex-sizing reset-size6 size3 mtight&#34;&gt;&lt;span class=&#34;mord mtight&#34;&gt;&lt;span class=&#34;mord mtight&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-s&#34;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.345em;&#34;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mclose nulldelimiter&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; that of a half-precision vector (&lt;code&gt;halfvec&lt;/code&gt;). This type is named after its quantization algorithm.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;</description>
      </item>
    <item>
        <title>Release History &amp; API Evolution</title>
        <link>https://vchord.pgsty.com/bm25/reference/versions/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/bm25/reference/versions/</guid>
        <description>&lt;p&gt;This page tracks the release history and SQL schema evolution of &lt;code&gt;vchord_bm25&lt;/code&gt; (&lt;a href=&#34;https://github.com/pgsty/vchord_bm25&#34;&gt;&lt;code&gt;pgsty/vchord_bm25&lt;/code&gt;&lt;/a&gt; / &lt;a href=&#34;https://github.com/supervc-stack/VectorChord-bm25&#34;&gt;&lt;code&gt;supervc-stack/VectorChord-bm25&lt;/code&gt;&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;h2 id=&#34;version-summary-matrix&#34;&gt;Version Summary Matrix&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Version&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Schema&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Indexed Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Tokenizer&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Key Additions&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;main&lt;/code&gt; (Next-Gen)&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Extension schema&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;tsvector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Native &lt;code&gt;to_tsvector&lt;/code&gt; (or custom)&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Complete storage &amp;amp; index engine rewrite on native &lt;code&gt;tsvector&lt;/code&gt;; external sort parallel &lt;code&gt;ambuild&lt;/code&gt;; index reloptions (&lt;code&gt;options&lt;/code&gt;, &lt;code&gt;limit&lt;/code&gt;, &lt;code&gt;prefilter&lt;/code&gt;); &lt;code&gt;bm25.*&lt;/code&gt; GUCs; PostgreSQL 18 support.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;v0.3.0&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25_catalog&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25vector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg_tokenizer&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Added &lt;code&gt;bm25_page_inspect(regclass, int)&lt;/code&gt;, &lt;code&gt;to_bm25query(regclass, int[])&lt;/code&gt; overload, and PostgreSQL 18 compatibility.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;v0.2.2&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25_catalog&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25vector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg_tokenizer&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Added &lt;code&gt;bm25_catalog.enable_prefilter&lt;/code&gt; GUC for accurate filtered Top-K BM25 search with &lt;code&gt;WHERE&lt;/code&gt; clauses.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;v0.2.1&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25_catalog&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25vector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg_tokenizer&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Bug fixes for growing/sealed segment transitions and vacuum cleanup.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;v0.2.0&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25_catalog&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25vector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg_tokenizer&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Added &lt;code&gt;=&lt;/code&gt; and &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt; equality operators on &lt;code&gt;bm25vector&lt;/code&gt; and implicit cast &lt;code&gt;CREATE CAST (int[] AS bm25vector) AS IMPLICIT&lt;/code&gt;.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;v0.1.1&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25_catalog&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25vector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg_tokenizer&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Decoupled tokenization into standalone &lt;code&gt;pg_tokenizer&lt;/code&gt; extension; changed &lt;code&gt;to_bm25query(regclass, bm25vector)&lt;/code&gt; signature.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;&lt;code&gt;v0.1.0&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25_catalog&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;bm25vector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Built-in &lt;code&gt;unicode&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Initial release with &lt;code&gt;bm25vector&lt;/code&gt;, &lt;code&gt;bm25query&lt;/code&gt;, &lt;code&gt;USING bm25&lt;/code&gt;, and Block-WeakAnd Top-K scan.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;detailed-upgrade-changes&#34;&gt;Detailed Upgrade Changes&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;v030-sqlvchord_bm25--022--030sql&#34;&gt;&lt;code&gt;v0.3.0&lt;/code&gt; (&lt;code&gt;sql/vchord_bm25--0.2.2--0.3.0.sql&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Added page diagnostic function:&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d0277849-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d0277849-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FUNCTION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bm25_page_inspect&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;regclass&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;blkno&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;INT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;RETURNS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;TEXT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Added &lt;code&gt;to_bm25query(regclass, int[])&lt;/code&gt; convenience overload in &lt;code&gt;main&lt;/code&gt;/late &lt;code&gt;0.3.x&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;v022-sqlvchord_bm25--021--022sql&#34;&gt;&lt;code&gt;v0.2.2&lt;/code&gt; (&lt;code&gt;sql/vchord_bm25--0.2.1--0.2.2.sql&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Added prefiltering support in Block-WeakAnd (&lt;code&gt;bm25_catalog.enable_prefilter&lt;/code&gt; GUC, enabled by default in &lt;code&gt;0.3.0&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;Improved MVCC visibility checking during index scans to prevent dead/filtered tuples from polluting the Top-K threshold.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;v020-sqlvchord_bm25--011--020sql&#34;&gt;&lt;code&gt;v0.2.0&lt;/code&gt; (&lt;code&gt;sql/vchord_bm25--0.1.1--0.2.0.sql&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Added &lt;code&gt;=&lt;/code&gt; and &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt; operators for &lt;code&gt;bm25vector&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Added implicit cast from &lt;code&gt;int[]&lt;/code&gt; to &lt;code&gt;bm25vector&lt;/code&gt; (&lt;code&gt;_vchord_bm25_cast_array_to_bm25vector&lt;/code&gt;), allowing &lt;code&gt;tokenize(text, name)&lt;/code&gt; output (&lt;code&gt;INT[]&lt;/code&gt;) to be assigned or passed directly wherever &lt;code&gt;bm25vector&lt;/code&gt; is expected.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;v011-sqlvchord_bm25--010--011sql&#34;&gt;&lt;code&gt;v0.1.1&lt;/code&gt; (&lt;code&gt;sql/vchord_bm25--0.1.0--0.1.1.sql&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Extracted built-in &lt;code&gt;create_tokenizer&lt;/code&gt; / &lt;code&gt;tokenize&lt;/code&gt; functions into the dedicated &lt;code&gt;pg_tokenizer&lt;/code&gt; extension (&lt;code&gt;tokenizer_catalog&lt;/code&gt;), enabling rich text analyzers, Snowball stemmers, stopwords, synonyms, HuggingFace models, &lt;code&gt;jieba&lt;/code&gt;, and &lt;code&gt;lindera&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Simplified &lt;code&gt;to_bm25query(index_oid regclass, query_vector bm25vector)&lt;/code&gt; to accept a &lt;code&gt;bm25vector&lt;/code&gt; directly.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;next-generation-rewrite-main-branch&#34;&gt;Next-Generation Rewrite (&lt;code&gt;main&lt;/code&gt; Branch)&#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Replaced custom &lt;code&gt;bm25vector&lt;/code&gt; with PostgreSQL&amp;rsquo;s native &lt;code&gt;tsvector&lt;/code&gt; (&lt;code&gt;CREATE OPERATOR CLASS bm25_ops FOR TYPE tsvector USING bm25&lt;/code&gt;), allowing users to index &lt;code&gt;to_tsvector(...)&lt;/code&gt; columns directly with &lt;code&gt;USING bm25&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Added parallel index build (&lt;code&gt;bm25_parallel_build_main&lt;/code&gt;) with external merge sort and constant maintenance memory consumption.&lt;/li&gt;&#xA;&lt;li&gt;Added configurable BM25 hyperparameters (&lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mo stretchy=&#34;false&#34;&gt;[&lt;/mo&gt;&lt;mn&gt;1.2&lt;/mn&gt;&lt;mo separator=&#34;true&#34;&gt;,&lt;/mo&gt;&lt;mn&gt;2.0&lt;/mn&gt;&lt;mo stretchy=&#34;false&#34;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;k_1 \in [1.2, 2.0]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.8444em;vertical-align:-0.15em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.0315em;&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;msupsub&#34;&gt;&lt;span class=&#34;vlist-t vlist-t2&#34;&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.3011em;&#34;&gt;&lt;span style=&#34;top:-2.55em;margin-left:-0.0315em;margin-right:0.05em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:2.7em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;katex-sizing reset-size6 size3 mtight&#34;&gt;&lt;span class=&#34;mord mtight&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-s&#34;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.15em;&#34;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.2778em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mrel&#34;&gt;∈&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.2778em;&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:1em;vertical-align:-0.25em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mopen&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;1.2&lt;/span&gt;&lt;span class=&#34;mpunct&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.1667em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;2.0&lt;/span&gt;&lt;span class=&#34;mclose&#34;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mo stretchy=&#34;false&#34;&gt;[&lt;/mo&gt;&lt;mn&gt;0.0&lt;/mn&gt;&lt;mo separator=&#34;true&#34;&gt;,&lt;/mo&gt;&lt;mn&gt;1.0&lt;/mn&gt;&lt;mo stretchy=&#34;false&#34;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;b \in [0.0, 1.0]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.7335em;vertical-align:-0.0391em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.2778em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mrel&#34;&gt;∈&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.2778em;&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:1em;vertical-align:-0.25em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mopen&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;0.0&lt;/span&gt;&lt;span class=&#34;mpunct&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.1667em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;1.0&lt;/span&gt;&lt;span class=&#34;mclose&#34;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;) via &lt;code&gt;WITH (options = $$ k1 = 1.2, b = 0.75 $$)&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>Backup &amp; Restore</title>
        <link>https://vchord.pgsty.com/cloud/manage/backup-restore/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/manage/backup-restore/</guid>
        <description>&lt;p&gt;Database backups are an integral part of any disaster recovery plan. Disasters come in many shapes and sizes. It could be as simple as accidentally deleting a table column, the database crashing, or even a natural calamity wiping out the underlying hardware a database is running on. The risks and impact brought by these scenarios can never be fully eliminated, but only minimized or even mitigated. Having database backups is a form of insurance policy. They are essentially snapshots of the database at various points in time. When disaster strikes, database backups allow the project to be brought back to any of these points in time, therefore averting the crisis.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Benchmark with pgvectorscale</title>
        <link>https://vchord.pgsty.com/docs/benchmark/pgvectorscale/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/benchmark/pgvectorscale/</guid>
        <description>&lt;p&gt;In this section, we compare VectorChord with pgvectorscale, a PostgreSQL extension that provides vector similarity search capabilities. We will focus on four key metrics: QPS (Queries Per Second), Recall@10/100, Index Building Time, and Insertion Time. Memory and disk performance will also be discussed. If you are interested in the details of our implementation, please refer to our blog &lt;a href=&#34;https://vchord.pgsty.com/blog/post/vector-search-over-postgresql-a-comparative-analysis-of-memory-and-disk-solutions/&#34;&gt;Vector Search Over PostgreSQL: A Comparative Analysis of Memory and Disk Solutions&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;qps--recall&#34;&gt;QPS &amp;amp; Recall&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a id=&#34;Memory&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
      </item>
    <item>
        <title>BM25 &amp; Block-WeakAnd Internals</title>
        <link>https://vchord.pgsty.com/bm25/usage/algorithms/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/bm25/usage/algorithms/</guid>
        <description>&lt;p&gt;This page details the exact scoring equations and data structures implemented in &lt;code&gt;vchord_bm25&lt;/code&gt; (&lt;code&gt;crates/bm25/src/bm25.rs&lt;/code&gt; and &lt;code&gt;src/algorithm/block_wand.rs&lt;/code&gt;).&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-okapi-bm25-scoring-formula&#34;&gt;1. Okapi BM25 Scoring Formula&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Given a document &lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.6833em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.0278em;&#34;&gt;D&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; and a query &lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;Q&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mspace linebreak=&#34;newline&#34;&gt;&lt;/mspace&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo separator=&#34;true&#34;&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo separator=&#34;true&#34;&gt;,&lt;/mo&gt;&lt;mspace linebreak=&#34;newline&#34;&gt;&lt;/mspace&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo separator=&#34;true&#34;&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msub&gt;&lt;mspace linebreak=&#34;newline&#34;&gt;&lt;/mspace&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;Q = \\{q_1, q_2, \\dots, q_m\\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.8778em;vertical-align:-0.1944em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34;&gt;Q&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.2778em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mrel&#34;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mspace katex-newline&#34;&gt;&lt;/span&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.8889em;vertical-align:-0.1944em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;&lt;span class=&#34;mord&#34;&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.0359em;&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;msupsub&#34;&gt;&lt;span class=&#34;vlist-t vlist-t2&#34;&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.3011em;&#34;&gt;&lt;span style=&#34;top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:2.7em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;katex-sizing reset-size6 size3 mtight&#34;&gt;&lt;span class=&#34;mord mtight&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-s&#34;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.15em;&#34;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mpunct&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.1667em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.0359em;&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;msupsub&#34;&gt;&lt;span class=&#34;vlist-t vlist-t2&#34;&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.3011em;&#34;&gt;&lt;span style=&#34;top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:2.7em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;katex-sizing reset-size6 size3 mtight&#34;&gt;&lt;span class=&#34;mord mtight&#34;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-s&#34;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.15em;&#34;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mpunct&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mspace katex-newline&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.1667em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34;&gt;d&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;mpunct&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.1667em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.0359em;&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;msupsub&#34;&gt;&lt;span class=&#34;vlist-t vlist-t2&#34;&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.1514em;&#34;&gt;&lt;span style=&#34;top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:2.7em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;katex-sizing reset-size6 size3 mtight&#34;&gt;&lt;span class=&#34;mord mathnormal mtight&#34;&gt;m&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-s&#34;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.15em;&#34;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mspace katex-newline&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; with query term frequencies &lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy=&#34;false&#34;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo separator=&#34;true&#34;&gt;,&lt;/mo&gt;&lt;mi&gt;Q&lt;/mi&gt;&lt;mo stretchy=&#34;false&#34;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;c(q_i, Q)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:1em;vertical-align:-0.25em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;mopen&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.0359em;&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;msupsub&#34;&gt;&lt;span class=&#34;vlist-t vlist-t2&#34;&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.3117em;&#34;&gt;&lt;span style=&#34;top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:2.7em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;katex-sizing reset-size6 size3 mtight&#34;&gt;&lt;span class=&#34;mord mathnormal mtight&#34;&gt;i&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-s&#34;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.15em;&#34;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mpunct&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.1667em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34;&gt;Q&lt;/span&gt;&lt;span class=&#34;mclose&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; and document term frequencies &lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo stretchy=&#34;false&#34;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo separator=&#34;true&#34;&gt;,&lt;/mo&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mo stretchy=&#34;false&#34;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;f(q_i, D)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:1em;vertical-align:-0.25em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.1076em;&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;mopen&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.0359em;&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;msupsub&#34;&gt;&lt;span class=&#34;vlist-t vlist-t2&#34;&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.3117em;&#34;&gt;&lt;span style=&#34;top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:2.7em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;katex-sizing reset-size6 size3 mtight&#34;&gt;&lt;span class=&#34;mord mathnormal mtight&#34;&gt;i&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-s&#34;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.15em;&#34;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mpunct&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.1667em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.0278em;&#34;&gt;D&lt;/span&gt;&lt;span class=&#34;mclose&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, &lt;code&gt;vchord_bm25&lt;/code&gt; computes:&lt;/p&gt;</description>
      </item>
    <item>
        <title>`pgvector` compatibility</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/usage/compatibility/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/usage/compatibility/</guid>
        <description>&lt;p&gt;&lt;code&gt;pgvecto.rs&lt;/code&gt; is natively compatible with &lt;code&gt;pgvector&lt;/code&gt; at:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;CREATE TABLE&lt;/code&gt; commands, e.g. &lt;code&gt;CREATE TABLE t (val vector(3))&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;INSERT INTO&lt;/code&gt; commands, e.g. &lt;code&gt;INSERT INTO t (val) VALUES (&#39;[0.6,0.6,0.6]&#39;)&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;code&gt;pgvecto.rs&lt;/code&gt; can be configured to be compatible with &lt;code&gt;pgvector&lt;/code&gt; at:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Index options, which allows you to create index by &lt;code&gt;USING hnsw (val vector_ip_ops)&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Query options, which can be set by &lt;code&gt;SET ivfflat.probes = 10&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This feature is named &lt;code&gt;pgvector&lt;/code&gt; compatibility.&#xA;It can be enabled by &lt;code&gt;SET vectors.pgvector_compatibility = on&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Kubernetes</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/admin/kubernetes/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/admin/kubernetes/</guid>
        <description>&lt;p&gt;If you want to use &lt;code&gt;pgvecto.rs&lt;/code&gt; in PostgreSQL which is running in Kubernetes, we provide a tutorial to help you. In this tutorial, we will use &lt;a href=&#34;https://cloudnative-pg.io/&#34;&gt;CloudNative-PG&lt;/a&gt; to deploy PostgreSQL cluster in Kubernetes.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;Requirements&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;requirements&#34;&gt;Requirements&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Name&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Version&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://helm.sh/&#34;&gt;helm&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&amp;gt;= 2.4.1&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://kubernetes.io/docs/tasks/tools/&#34;&gt;kubectl&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&amp;gt;= 1.14&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://kubernetes.io/&#34;&gt;Kubernetes&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&amp;gt;= 1.24.0&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;install-cloudnative-pg&#34;&gt;Install CloudNative-PG&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;We use &lt;a href=&#34;https://cloudnative-pg.io/&#34;&gt;CloudNative-PG (cnpg)&lt;/a&gt; to deploy PostgreSQL cluster in Kubernetes. You can install it by &lt;a href=&#34;https://helm.sh/docs/intro/install/&#34;&gt;helm&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Similarity Filter</title>
        <link>https://vchord.pgsty.com/docs/usage/similarity-filter/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/usage/similarity-filter/</guid>
        <description>&lt;p&gt;Usually, &lt;code&gt;ORDER BY&lt;/code&gt; and &lt;code&gt;LIMIT&lt;/code&gt; clauses are used to perform vector search. In some cases, you may want to use a &lt;code&gt;WHERE&lt;/code&gt; clause to filter out vectors that are far from the query. Naturally, you might write the following SQL.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-496d8b1c-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;8&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-496d8b1c-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;EXPLAIN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;COSTS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FALSE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;WHERE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;[0, 0, 0]&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ORDER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;BY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;[0, 0, 0]&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LIMIT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;                                  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;QUERY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PLAN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;                                   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-------------------------------------------------------------------------------&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;Limit&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;Index&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Scan&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items_embedding_idx&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;         &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;Order&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;By&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;[0,0,0]&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;         &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Filter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;[0,0,0]&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;0.1&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;double&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;precision&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;The returned results meet expectations, while this approach suffers from poor performance. This is because if fewer than &lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;10&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.6444em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; vectors fall within the distance threshold, PostgreSQL forces the index to continue to search to get &lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;10&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.6444em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; results, exhausting the entire search space.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Sparse Vector Search</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/use-case/sparse-vector/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/use-case/sparse-vector/</guid>
        <description>&lt;p&gt;In the past, hybrid search combined two search methods: traditional keyword-based search and vector-based similarity search. However, sparse vector can act as a substitute for keyword search, unlocking the full potential of the data pipeline with pure vector search.&lt;/p&gt;&#xA;&lt;div class=&#34;td-callout td-callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-lightbulb&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Tip&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;For more information about keyword-based hybrid search, please refer to &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/use-case/hybrid-search/&#34;&gt;Hybrid Search&lt;/a&gt;&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;This post explores how to use how &lt;a href=&#34;https://huggingface.co/BAAI/bge-m3&#34;&gt;BGE-M3&lt;/a&gt; and &lt;code&gt;pgvecto.rs&lt;/code&gt; to exploit the potential of hybrid search using both sparse and dense vectors.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Generative Question-Answering</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/use-case/question-answering/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/use-case/question-answering/</guid>
        <description>&lt;p&gt;Vector search can also be used to provide context to generative models such as OpenAI&amp;rsquo;s GPT series, improving the quality of the outputs.&lt;/p&gt;&#xA;&lt;p&gt;This post will explore the use of &lt;code&gt;pgvecto.rs&lt;/code&gt; in building and retrieving from a vector knowledge base to bolster the performance of generative models in question-answering tasks. A knowledge base serves as &amp;ldquo;long-term memory&amp;rdquo; for generative models, providing them persistent, curated, and accurate information as &lt;strong&gt;context&lt;/strong&gt; to draw from when generating an answer to a question. This results in answers that are more accurate, reduces the possibility of the model producing &amp;ldquo;hallucinations&amp;rdquo; (statements with no basis in reality), and increases user trust in the outputs. This technique is known as Retrieval-Augmented Generation, or RAG: see &lt;a href=&#34;https://ai.meta.com/blog/retrieval-augmented-generation-streamlining-the-creation-of-intelligent-natural-language-processing-models/&#34;&gt;this post&lt;/a&gt; or the &lt;a href=&#34;https://arxiv.org/abs/2005.11401v4&#34;&gt;related paper&lt;/a&gt; for more information.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Migration</title>
        <link>https://vchord.pgsty.com/pgvecto-rs/admin/migration/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/pgvecto-rs/admin/migration/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;outline-23&#34;&gt;outline: [2,3]&#xA;&lt;/h2&gt;&#xA;&lt;h1 id=&#34;pgvectors-migration-overview&#34;&gt;PGVecto.rs Migration Overview&#xA;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;from-pgvector&#34;&gt;From pgvector&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a id=&#34;Prerequisites&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;prerequisites&#34;&gt;Prerequisites&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;When migrating from &lt;code&gt;pgvector&lt;/code&gt; to &lt;code&gt;PGVecto.rs&lt;/code&gt;, it is possible that you may have a table with a column of vector type. An example of this would be:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-2906a72b-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-2906a72b-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TABLE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bigserial&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;PRIMARY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;In addition, some rows will be inserted into the table, as follows:&lt;/p&gt;</description>
      </item>
    <item>
        <title>PostgreSQL Tuning</title>
        <link>https://vchord.pgsty.com/docs/usage/postgresql-tuning/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/usage/postgresql-tuning/</guid>
        <description>&lt;p&gt;Indexing may be parallelized. Parallelism increases server load and is therefore not enabled by default in PostgreSQL. To enable it, refer to the following SQL.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-92a983c7-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;16&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-92a983c7-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Sets the maximum number of background processes that the cluster can support.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- It&amp;#39;s recommended to set it to at least the sum of your desired parallelism plus 8.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- For example, if you want to use 16 threads for parallel processing, set the value at least to 24.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Depending on your workload, this value might be useful to be higher.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Note: A restart is required for this setting to take effect.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;ALTER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SYSTEM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;max_worker_processes&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Sets the maximum number of workers that the cluster can support for parallel operations.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- It&amp;#39;s recommended to set it to the sum of your desired parallelism minus 1.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- For example, if you want to use 16 threads for parallel processing, set the value to 15.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;max_parallel_workers&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Sets the maximum number of parallel workers that can be started by a single utility command.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- It&amp;#39;s recommended to set it to the sum of your desired parallelism minus 1.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- For example, if you want to use 16 threads for parallel processing, set the value to 15.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;max_parallel_maintenance_workers&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;The number of parallel workers also depends on the table&amp;rsquo;s configuration. By default, this is automatically determined by PostgreSQL. If PostgreSQL identifies it as disabled, parallel indexing will not take effect. You can override PostgreSQL&amp;rsquo;s behavior by adjusting the table&amp;rsquo;s &lt;code&gt;parallel_workers&lt;/code&gt; setting to enable parallel indexing.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Upgrade</title>
        <link>https://vchord.pgsty.com/cloud/manage/upgrade/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/manage/upgrade/</guid>
        <description>&lt;p&gt;You may need to upgrade your cluster and do not want to lose any data. You can upgrade the server resource like CPU, memory. Or you only want to upgrade the storage. The following sections will guide you through the process of upgrading your cluster.&lt;/p&gt;&#xA;&lt;h2 id=&#34;increasing-server-resource&#34;&gt;Increasing server resource&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;If you want to increase the server resource like CPU and memory, the status of the cluster need to be &lt;code&gt;Ready&lt;/code&gt;. And click the &lt;code&gt;Upgrade&lt;/code&gt; button in the cluster detail page.&lt;/p&gt;</description>
      </item>
    <item>
        <title>API Keys</title>
        <link>https://vchord.pgsty.com/cloud/manage/apikey/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/manage/apikey/</guid>
        <description>&lt;p&gt;On VectorChord Cloud, every project comes with a set of API keys. These keys are essential authentication tokens required for initiating terraform operations.&lt;/p&gt;&#xA;&lt;h2 id=&#34;role-based-access-control-rbac&#34;&gt;Role-based Access Control (RBAC)&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Role-based Access Control (RBAC) is a crucial security mechanism in VectorChord Cloud, applicable to managing API calls. This system allows for fine-grained control over access to resources by assigning roles with specific permissions to users within the projects.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Monitoring</title>
        <link>https://vchord.pgsty.com/docs/usage/monitoring/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/usage/monitoring/</guid>
        <description>&lt;p&gt;You can monitor the progress of building a PostgreSQL index by querying the &lt;a href=&#34;https://www.postgresql.org/docs/current/progress-reporting.html#CREATE-INDEX-PROGRESS-REPORTING&#34;&gt;&lt;code&gt;pg_stat_progress_create_index&lt;/code&gt;&lt;/a&gt; view.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-4d9984eb-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;SQL&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-4d9984eb-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-SQL&#34; data-lang=&#34;SQL&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;command&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;phase&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;round&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;blocks_done&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;nullif&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;blocks_total&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;AS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;%&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pg_stat_progress_create_index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;a id=&#34;Reference&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;reference&#34;&gt;Reference&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a id=&#34;phases&#34;&gt;&lt;/a&gt;&#xA;&lt;a id=&#34;Phases&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;phases-vchordrq&#34;&gt;Phases (&lt;code&gt;vchordrq&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;span class=&#34;td-badge td-badge--neutral&#34;&gt;vchordrq&lt;/span&gt;&#xA;&lt;p&gt;There are 5 steps in the index construction process of &lt;code&gt;vchordrq&lt;/code&gt;. The phase name of each step are as follows:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Fallback Parameters</title>
        <link>https://vchord.pgsty.com/docs/usage/fallback-parameters/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/usage/fallback-parameters/</guid>
        <description>&lt;span class=&#34;td-badge td-badge--info&#34;&gt;since v1.1.0&lt;/span&gt;&#xA;&lt;p&gt;Search parameters are typically configured via GUCs. VectorChord also offers an alternative method, allowing these parameters to be attached directly to an index instead of a session or transaction. In other words, you can store them as part of the index&amp;rsquo;s storage parameters.&lt;/p&gt;&#xA;&lt;p&gt;You could set &lt;code&gt;probes&lt;/code&gt; at index building using the following syntax.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-c7aaad83-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-c7aaad83-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;INDEX&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items_embedding_idx&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;USING&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vchordrq&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector_l2_ops&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;WITH&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;options&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;$$&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;build&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;internal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lists&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;$$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;probes&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;10&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;You can now perform searches without setting GUCs:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Terraform Integration Overview with VectorChord Cloud</title>
        <link>https://vchord.pgsty.com/cloud/manage/terraform/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/manage/terraform/</guid>
        <description>&lt;p&gt;This guide walks you through the process of installing and configuring the PGVecto.rs Cloud provider.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-prerequisites&#34;&gt;1. Prerequisites&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Before you begin, ensure you have the following:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Terraform Installed: Download and install Terraform from &lt;a href=&#34;https://www.terraform.io/downloads.html&#34;&gt;here&lt;/a&gt; by following the provided instructions.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;VectorChord Cloud Account: Access to VectorChord Cloud and your API Key are essential. Go to the &lt;a href=&#34;https://cloud.vectorchord.ai&#34;&gt;VectorChord Cloud Console&lt;/a&gt; and create an API key. The API key must have the &lt;code&gt;ProjectOwner&lt;/code&gt; permissions. For more information, see &lt;a href=&#34;https://vchord.pgsty.com/cloud/manage/apikey/&#34;&gt;API Key&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
      </item>
    <item>
        <title>Measure Recall</title>
        <link>https://vchord.pgsty.com/docs/usage/measure-recall/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/usage/measure-recall/</guid>
        <description>&lt;span class=&#34;td-badge td-badge--info&#34;&gt;since v0.5.0&lt;/span&gt;&#xA;&lt;p&gt;In the context of vector search, recall is the ratio of true nearest neighbors to approximate nearest neighbors returned by the index. For example, if the index retrieves &lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;100&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;100&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.6444em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;100&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; approximate nearest neighbors and &lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;97&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;97&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.6444em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;97&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; of them are true nearest neighbors, then the recall is &lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mn&gt;97&lt;/mn&gt;&lt;mn&gt;100&lt;/mn&gt;&lt;/mfrac&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0.97&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;\frac{97}{100} = 0.97&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:1.1901em;vertical-align:-0.345em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;&lt;span class=&#34;mopen nulldelimiter&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mfrac&#34;&gt;&lt;span class=&#34;vlist-t vlist-t2&#34;&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.8451em;&#34;&gt;&lt;span style=&#34;top:-2.655em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:3em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;katex-sizing reset-size6 size3 mtight&#34;&gt;&lt;span class=&#34;mord mtight&#34;&gt;&lt;span class=&#34;mord mtight&#34;&gt;100&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;top:-3.23em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:3em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;frac-line&#34; style=&#34;border-bottom-width:0.04em;&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;top:-3.394em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:3em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;katex-sizing reset-size6 size3 mtight&#34;&gt;&lt;span class=&#34;mord mtight&#34;&gt;&lt;span class=&#34;mord mtight&#34;&gt;97&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-s&#34;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.345em;&#34;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mclose nulldelimiter&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.2778em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mrel&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.2778em;&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.6444em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;0.97&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;td-callout td-callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-lightbulb&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Tip&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This feature is in preview.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Regions</title>
        <link>https://vchord.pgsty.com/cloud/manage/regions/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/manage/regions/</guid>
        <description>&lt;h2 id=&#34;deploying-to-regions&#34;&gt;Deploying to Regions&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;With VectorChord Cloud, you can deploy clusters to different Regions. When creating an cluster, pick a Region using the drop-down selector.&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://vchord.pgsty.com/cloud/images/supported-regions.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;div class=&#34;td-callout td-callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-lightbulb&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Tip&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;Don’t see the Region or Provider that you want? Please contact us at &lt;a href=&#34;https://discord.com/channels/974584200327991326/1243043133801889792&#34;&gt;Discord&lt;/a&gt;, we are happy to help.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Prewarm</title>
        <link>https://vchord.pgsty.com/docs/usage/prewarm/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/usage/prewarm/</guid>
        <description>&lt;p&gt;After PostgreSQL starts, tables and indexes are loaded from storage into the buffer pool only when they are accessed for the first time. As queries are executed, the frequently accessed parts of the index are naturally cached in the buffer pool. However, as initial queries are executed, the buffer pool is empty, which causes the queries to be slow.&lt;/p&gt;&#xA;&lt;p&gt;The PostgreSQL extension &lt;code&gt;pg_prewarm&lt;/code&gt; includes the &lt;code&gt;pg_prewarm&lt;/code&gt; function, which can partially address this issue. After PostgreSQL starts, you simply provide the name of the index to this function, and it will load the index from storage into the buffer pool.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Workflow</title>
        <link>https://vchord.pgsty.com/cloud/manage/workflow/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/cloud/manage/workflow/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;Overview&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Workflow is a feature that allow you can use some pre-defined functions to complete some tasks. For example, you can use &lt;a href=&#34;https://vchord.pgsty.com/cloud/manage/workflow/#ExternalBuildIndex&#34;&gt;&lt;code&gt;ExternalBuildIndex&lt;/code&gt;&lt;/a&gt; workflow to build index externally for your Postgres cluster. There are some advantages of using workflow:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Out Of Box&lt;/strong&gt;: You can use the pre-defined functions to complete some tasks without writing any code.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Accelerate Tasks&lt;/strong&gt;: You can use a server with a higher resource configuration than the PostgreSQL cluster to accelerate the task.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Cluster Stability&lt;/strong&gt;: The workflow is executed in a separate server, which will not affect the stability of the PostgreSQL cluster.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Low Cost&lt;/strong&gt;: You do not need to pay continuously like a database for high configuration resources for short-term tasks.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;supported-workflows&#34;&gt;Supported Workflows&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Supported workflows are as follows:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Prefilter</title>
        <link>https://vchord.pgsty.com/docs/usage/prefilter/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/usage/prefilter/</guid>
        <description>&lt;span class=&#34;td-badge td-badge--info&#34;&gt;since v0.4.0&lt;/span&gt;&#xA;&lt;p&gt;In a filtered index scan, the index performs the scan first and then PostgreSQL checks whether the filter conditions are satisfied. On this page, &amp;ldquo;filter&amp;rdquo; refers to the filter on the index scan node of the query plan in PostgreSQL. This is usually constructed from the &lt;code&gt;WHERE&lt;/code&gt; clause in the SQL statement. The filter does not need to have a specific form.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-54be7858-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;7&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-54be7858-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;EXPLAIN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;COSTS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FALSE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;WHERE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;AND&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector_norm&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;                          &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;QUERY&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PLAN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;                          &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;--------------------------------------------------------------&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;Index&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Scan&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items_pkey&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;Index&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Cond&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Filter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector_norm&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embedding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;0.5&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;double&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;precision&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;However, this is not always the most efficient approach for vector search. Consider the following query.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Prefetch</title>
        <link>https://vchord.pgsty.com/docs/usage/prefetch/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/usage/prefetch/</guid>
        <description>&lt;span class=&#34;td-badge td-badge--info&#34;&gt;since v0.4.0&lt;/span&gt;&#xA;&lt;p&gt;Prefetch dramatically accelerates queries that involve I/O operations. It works by proactively reading buffers into operating system page cache or PostgreSQL&amp;rsquo;s buffer pool based on the actual needs of the index.&lt;/p&gt;&#xA;&lt;p&gt;Prefetch helps overlap I/O with computation, as well as I/O with other I/O operations, significantly reducing the time spent waiting for buffers during query execution, thereby improving overall query performance.&lt;/p&gt;&#xA;&lt;div class=&#34;td-callout td-callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-lightbulb&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Tip&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This feature is enabled by default. Any query can benefit from prefetching with VectorChord &lt;code&gt;0.4.0&lt;/code&gt; and later versions.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Rerank in Table</title>
        <link>https://vchord.pgsty.com/docs/usage/rerank-in-table/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/usage/rerank-in-table/</guid>
        <description>&lt;span class=&#34;td-badge td-badge--info&#34;&gt;since v0.2.1&lt;/span&gt;&#xA;&lt;p&gt;PostgreSQL indexes store row identifiers and the values of the indexed columns. Typically, indexed columns have simple data types, for example, integers or strings with short length limits.&lt;/p&gt;&#xA;&lt;p&gt;However, if the indexed column is of a vector type, both the table and the index store vectors, which means you pay twice the storage cost for the vectors. If you would like to reduce this cost, you can enable &lt;code&gt;rerank_in_table&lt;/code&gt; when building the index. The index will then use a tricky approach where it does not store the vectors itself but reads them from the table when needed.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Partitioning Tuning</title>
        <link>https://vchord.pgsty.com/docs/usage/partitioning-tuning/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/usage/partitioning-tuning/</guid>
        <description>&lt;p&gt;For large tables, the partitioning phase dominates both build time and memory consumption.&lt;/p&gt;&#xA;&lt;p&gt;Time complexity of partitioning is &lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo stretchy=&#34;false&#34;&gt;(&lt;/mo&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mo stretchy=&#34;false&#34;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;O(FC^{2}DL)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:1.0641em;vertical-align:-0.25em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.0278em;&#34;&gt;O&lt;/span&gt;&lt;span class=&#34;mopen&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.1389em;&#34;&gt;F&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.0715em;&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;msupsub&#34;&gt;&lt;span class=&#34;vlist-t&#34;&gt;&lt;span class=&#34;vlist-r&#34;&gt;&lt;span class=&#34;vlist&#34; style=&#34;height:0.8141em;&#34;&gt;&lt;span style=&#34;top:-3.063em;margin-right:0.05em;&#34;&gt;&lt;span class=&#34;pstrut&#34; style=&#34;height:2.7em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;katex-sizing reset-size6 size3 mtight&#34;&gt;&lt;span class=&#34;mord mtight&#34;&gt;&lt;span class=&#34;mord mtight&#34;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.0278em;&#34;&gt;D&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34;&gt;L&lt;/span&gt;&lt;span class=&#34;mclose&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, and the memory consumption in bytes can be approximated by &lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo stretchy=&#34;false&#34;&gt;(&lt;/mo&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&#34;false&#34;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;4DC(F + T + 1)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:1em;vertical-align:-0.25em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.0278em;&#34;&gt;D&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.0715em;&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;mopen&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.1389em;&#34;&gt;F&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.2222em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mbin&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.2222em;&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.7667em;vertical-align:-0.0833em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.1389em;&#34;&gt;T&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.2222em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mbin&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;mspace&#34; style=&#34;margin-right:0.2222em;&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:1em;vertical-align:-0.25em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;mclose&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;,&lt;/p&gt;&#xA;&lt;p&gt;where:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.6833em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.0278em;&#34;&gt;D&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is the vector dimension, or &lt;code&gt;build.internal.kmeans_dimension&lt;/code&gt; if set.&lt;/li&gt;&#xA;&lt;li&gt;&lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;F&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.6833em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.1389em;&#34;&gt;F&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is &lt;code&gt;build.internal.sampling_factor&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.6833em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.0715em;&#34;&gt;C&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is &lt;code&gt;build.internal.lists[-1]&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.6833em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34; style=&#34;margin-right:0.1389em;&#34;&gt;T&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is &lt;code&gt;build.internal.build_threads&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;span class=&#34;katex&#34;&gt;&lt;span class=&#34;katex-mathml&#34;&gt;&lt;math xmlns=&#34;http://www.w3.org/1998/Math/MathML&#34;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&#34;application/x-tex&#34;&gt;L&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&#34;katex-html&#34; aria-hidden=&#34;true&#34;&gt;&lt;span class=&#34;katex-base&#34;&gt;&lt;span class=&#34;katex-strut&#34; style=&#34;height:0.6833em;&#34;&gt;&lt;/span&gt;&lt;span class=&#34;mord mathnormal&#34;&gt;L&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is &lt;code&gt;build.internal.kmeans_iterations&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This page introduces some tuning techniques to improve build time and memory consumption.&lt;/p&gt;</description>
      </item>
    <item>
        <title>External Build</title>
        <link>https://vchord.pgsty.com/docs/usage/external-build/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/docs/usage/external-build/</guid>
        <description>&lt;p&gt;In addition to using the methods in &lt;a href=&#34;https://vchord.pgsty.com/docs/usage/partitioning-tuning/&#34;&gt;Partitioning Tuning&lt;/a&gt; to achieve shorter build time and lower memory consumption at the cost of QPS and recall, you can also choose to run the partitioning phase offline on other machines or on GPUs. This feature is not supported by &lt;code&gt;vchordg&lt;/code&gt;, since it does not have a partitioning phase.&lt;/p&gt;&#xA;&lt;p&gt;Assume the table is &lt;code&gt;t&lt;/code&gt; and the column to be indexed is &lt;code&gt;val&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-6a8526fd-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;sql&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-6a8526fd-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TABLE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;val&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Specifically, you need to sample the column for which the index will be built.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Page Not Found</title>
        <link>https://vchord.pgsty.com/404/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/404/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;page-not-found&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The page you are looking for has moved, been deleted, or does not exist. Use the search bar (&lt;kbd&gt;⌘&lt;/kbd&gt;&lt;kbd&gt;K&lt;/kbd&gt;) or return to the &lt;a href=&#34;https://vchord.pgsty.com/docs/&#34;&gt;VectorChord Documentation&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>VectorChord 1.1: Native 4/8 Bit Vector Types and Per-Index Query Defaults</title>
        <link>https://vchord.pgsty.com/blog/release/vectorchord-11-native-48-bit-vector-types-and-per-index-query-defaults/</link>
        <pubDate>Sat, 14 Feb 2026 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/release/vectorchord-11-native-48-bit-vector-types-and-per-index-query-defaults/</guid>
        <description>&lt;p&gt;We’re excited to announce the release of VectorChord 1.1 as we kick off the new year of horse.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://vchord.pgsty.com/blog/release/vectorchord-10-developer-first-vector-search-on-postgres-100x-faster-indexing-than-pgvector/&#34;&gt;VectorChord 1.0&lt;/a&gt; was a milestone for Postgres-native vector search: it made large-scale indexing fast enough to feel like iteration, not an outage. In 1.1, we’re building on that foundation with RaBitQ8: A new vector type that delivers 4x storage savings and faster search speeds compared to float32, all with less than 1% recall loss. Paired with RaBitQ4 and more composable query control, VectorChord 1.1 is ready for your most demanding production workloads.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Scaling Vector Search to 1 Billion on PostgreSQL</title>
        <link>https://vchord.pgsty.com/blog/post/scaling-vector-search-to-1-billion-on-postgresql/</link>
        <pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/scaling-vector-search-to-1-billion-on-postgresql/</guid>
        <description>&lt;p&gt;For teams trying to run vector search at billion scale themselves, the challenge is often not raw performance, but practicality. Many solutions designed for billion-scale, low-latency vector search come with practical constraints, requiring tradeoffs that affect how easily they can be adopted.&lt;/p&gt;&#xA;&lt;p&gt;Most existing approaches fall into one of a few categories:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Operationally complex&lt;/strong&gt;: Powered by multi-node distributed system that are difficult to manage, operate, and maintain over time.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Build-time prohibitive&lt;/strong&gt;: Requiring long index build times, which makes re-indexing costly and easily impacts production workloads.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Memory heavy&lt;/strong&gt;: Depending on up to 1 TB of memory on a single machine, making the hardware significantly less affordable for most teams.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>VectorChord 1.0: Developer-First Vector Search on Postgres, 100x Faster Indexing than pgvector</title>
        <link>https://vchord.pgsty.com/blog/release/vectorchord-10-developer-first-vector-search-on-postgres-100x-faster-indexing-than-pgvector/</link>
        <pubDate>Thu, 04 Dec 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/release/vectorchord-10-developer-first-vector-search-on-postgres-100x-faster-indexing-than-pgvector/</guid>
        <description>&lt;p&gt;Two years ago, when we published the very first &lt;a href=&#34;https://github.com/tensorchord/pgvecto.rs&#34;&gt;pgvecto.rs&lt;/a&gt; blog post, we made a bet: &lt;strong&gt;Postgres is the best place to do vector search&lt;/strong&gt;. Since then we’ve been iterating on that bet — from VBASE with filtered vector search, to longer vector support, to the RaBitQ quantization scheme and disk‑friendly index layouts.&lt;/p&gt;&#xA;&lt;p&gt;With VectorChord 1.0 we’re moving the needle again. On a 16 vCPU machine, we can now build an index over 100M vectors in under 20 minutes. On the same scale, pgvector needs more than 50 hours. That number sounds impressive, but the point of this release isn’t just to win a benchmark slide. It’s to make your &lt;strong&gt;actual&lt;/strong&gt; development and iteration loop much faster.&lt;/p&gt;</description>
      </item>
    <item>
        <title>How We Made 100M Vector Indexing in 20 Minutes Possible on PostgreSQL</title>
        <link>https://vchord.pgsty.com/blog/post/how-we-made-100m-vector-indexing-in-20-minutes-possible-on-postgresql/</link>
        <pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/how-we-made-100m-vector-indexing-in-20-minutes-possible-on-postgresql/</guid>
        <description>&lt;h2 id=&#34;1-introduction&#34;&gt;1. Introduction&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In the past few months, we’ve heard consistent feedback from users and partners: while our goal of providing a scalable, high-performance alternative to pgvector is well-received, index build time and memory usage remain major concerns at billion-scale.&lt;/p&gt;&#xA;&lt;p&gt;Now VectorChord can index 100 million 768-dimensional vectors in 20 minutes on a 16 vCPU machine with just 12 GB of memory. By contrast, indexing the same data with pgvector requires around 200 GB of memory and about 40 hours on a 16-core instance. And pgvector with insufficient memory often suffer from page swapping, making builds even slower.&lt;/p&gt;</description>
      </item>
    <item>
        <title>VectorChord 0.5: New RaBitQ-empowered DiskANN Index and Continuous Recall Measurement</title>
        <link>https://vchord.pgsty.com/blog/release/vectorchord-05-new-rabitq-empowered-diskann-index-and-continuous-recall-measurement/</link>
        <pubDate>Fri, 26 Sep 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/release/vectorchord-05-new-rabitq-empowered-diskann-index-and-continuous-recall-measurement/</guid>
        <description>&lt;p&gt;We&amp;rsquo;re thrilled to announce the release of &lt;strong&gt;VectorChord 0.5&lt;/strong&gt;! This release marks a significant step forward in our mission to provide more flexible, powerful, and controllable vector search capabilities. In the 0.5 release, we&amp;rsquo;re introducing two major updates: &lt;strong&gt;experimental support for the DiskANN graph index&lt;/strong&gt; and a new &lt;strong&gt;recall measurement tool to monitor the health of your IVF+RaBitQ indexes proactively&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;new-index-preview-rabitq-empowered-diskann-index&#34;&gt;New Index Preview: RaBitQ-empowered DiskANN Index&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;From day one, VectorChord&amp;rsquo;s core indexing solution has relied on a powerful combination: the cluster-based IVF algorithm and RaBitQ quantization—what we ship as &lt;strong&gt;vchordrq (IVF+RaBitQ)&lt;/strong&gt;. This approach consistently delivers excellent low-latency, high-recall performance across a wide range of use cases and remains &lt;strong&gt;our recommended default&lt;/strong&gt; for most scenarios.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Bringing Search‑Engine Ranking to PostgreSQL with VectorChord‑BM25</title>
        <link>https://vchord.pgsty.com/blog/post/bringing-searchengine-ranking-to-postgresql-with-vectorchordbm25/</link>
        <pubDate>Tue, 12 Aug 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/bringing-searchengine-ranking-to-postgresql-with-vectorchordbm25/</guid>
        <description>&lt;p&gt;Modern applications rely on PostgreSQL for its fully ACID‑compliant, expressive SQL, and rich ecosystem of extensions. The database handles relational workloads exceptionally well, but many projects also need to search for large text collections—product descriptions, support tickets, documentation—and present the most relevant rows first. PostgreSQL’s native tools offer a foundation for this, yet their default ranking logic can leave ideal matches buried under less useful results. VectorChord‑BM25 changes that equation by introducing the BM25 relevance‑scoring algorithm directly into PostgreSQL.&lt;/p&gt;</description>
      </item>
    <item>
        <title>VectorChord 0.4: Faster PostgreSQL Vector Search with Advanced I/O and Prefiltering</title>
        <link>https://vchord.pgsty.com/blog/release/vectorchord-04-faster-postgresql-vector-search-with-advanced-io-and-prefiltering/</link>
        <pubDate>Thu, 05 Jun 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/release/vectorchord-04-faster-postgresql-vector-search-with-advanced-io-and-prefiltering/</guid>
        <description>&lt;p&gt;We&amp;rsquo;re excited to announce the release of &lt;strong&gt;VectorChord 0.4&lt;/strong&gt;, a significant update that enhances high-performance vector search within PostgreSQL. We believe this release pushes the boundaries of what&amp;rsquo;s possible for vector search in PostgreSQL, introducing key architectural improvements designed to lower latency and increase throughput for demanding, real-world workloads.&lt;/p&gt;&#xA;&lt;p&gt;If you&amp;rsquo;re working with similarity searches, RAG pipelines, or other AI-driven applications on PostgreSQL, these updates are for you. We&amp;rsquo;ve focused on two major areas: significantly enhancing I/O for cold queries by leveraging PostgreSQL&amp;rsquo;s evolving capabilities, and optimizing filtered vector searches.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Optimize RAG with Contextual Retrieval in PostgreSQL</title>
        <link>https://vchord.pgsty.com/blog/post/optimize-rag-with-contextual-retrieval-in-postgresql/</link>
        <pubDate>Fri, 30 May 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/optimize-rag-with-contextual-retrieval-in-postgresql/</guid>
        <description>&lt;p&gt;In the standard approach to Retrieval Augmented Generation (RAG), a common practice is to break down large documents into smaller, more manageable chunks. This is primarily done to improve the efficiency of the retrieval process, leveraging the sentence embedding and keyword bm25 scoring, allowing systems to quickly find and pull relevant pieces of information. While effective in many scenarios, this method can introduce a significant challenge: the potential for individual chunks to lose their surrounding context.&lt;/p&gt;</description>
      </item>
    <item>
        <title>VectorChord: Cost-Efficient Upload &amp; Search of 400 Million Vectors on AWS</title>
        <link>https://vchord.pgsty.com/blog/post/vectorchord-cost-efficient-upload-and-search-of-400-million-vectors-on-aws/</link>
        <pubDate>Fri, 30 May 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/vectorchord-cost-efficient-upload-and-search-of-400-million-vectors-on-aws/</guid>
        <description>&lt;p&gt;In this article, we will describe one method for uploading, indexing, and searching a big dataset of vector data in a cost-efficient manner using the real-world &lt;a href=&#34;https://laion.ai/blog/laion-400-open-dataset/&#34;&gt;LAION-400M&lt;/a&gt; dataset and the VectorChord extension in PostgreSQL.&lt;/p&gt;&#xA;&lt;p&gt;We&amp;rsquo;re attempting to show you what kind of hardware setup you need to allow you to search through this vast dataset using VectorChord. We want to make sure that you have a good experience with a search that is both accurate and fast.&lt;/p&gt;</description>
      </item>
    <item>
        <title>All-in-one VectorChord Suite: Building Production-Ready RAG Solutions Directly in PostgreSQL</title>
        <link>https://vchord.pgsty.com/blog/post/all-in-one-vectorchord-suite-building-production-ready-rag-solutions-directly-in-postgresql/</link>
        <pubDate>Tue, 29 Apr 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/all-in-one-vectorchord-suite-building-production-ready-rag-solutions-directly-in-postgresql/</guid>
        <description>&lt;p&gt;Retrieval-Augmented Generation (RAG) is revolutionizing our interaction with vast datasets and language models. RAG systems offer more precise, contextually aware, and current answers by retrieving pertinent information before generating responses. Nonetheless, constructing robust, scalable, and efficient RAG pipelines poses considerable challenges, particularly for production use.&lt;/p&gt;&#xA;&lt;p&gt;Many solutions feature complex architectures, using distinct databases for vector search, keyword search, and primary data storage. This commonly results in data synchronization challenges, greater infrastructure complexity, and higher operational costs.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Introducing Vechord: Turn PostgreSQL into your search engine in a Pythonic way.</title>
        <link>https://vchord.pgsty.com/blog/post/introducing-vechord-turn-postgresql-into-your-search-engine-in-a-pythonic-way/</link>
        <pubDate>Wed, 23 Apr 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/introducing-vechord-turn-postgresql-into-your-search-engine-in-a-pythonic-way/</guid>
        <description>&lt;p&gt;Today, we&amp;rsquo;re thrilled to announce the release of &lt;a href=&#34;https://github.com/tensorchord/vechord&#34;&gt;&lt;strong&gt;Vechord&lt;/strong&gt;&lt;/a&gt;, a new Python library designed to dramatically simplify building robust search infrastructure directly on top of the PostgreSQL database.&lt;/p&gt;&#xA;&lt;p&gt;In the rapidly evolving world of AI and large language models (LLMs), Retrieval-Augmented Generation (RAG) and semantic search have become crucial components. However, setting up the necessary vector search infrastructure often involves learning new database technologies, managing complex integrations, or wrestling with intricate frameworks. This adds friction and slows down development, especially for teams already comfortable with PostgreSQL.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Beyond Text: Unlock OCR-Free RAG in PostgreSQL with Modal &amp; VectorChord</title>
        <link>https://vchord.pgsty.com/blog/post/beyond-text-unlock-ocr-free-rag-in-postgresql-with-modal-and-vectorchord/</link>
        <pubDate>Tue, 15 Apr 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/beyond-text-unlock-ocr-free-rag-in-postgresql-with-modal-and-vectorchord/</guid>
        <description>&lt;p&gt;Building effective Retrieval-Augmented Generation (RAG) systems for documents often feels like wrestling with messy, complex pipelines. Especially when dealing with PDFs or scanned images, traditional methods rely heavily on Optical Character Recognition (OCR) and layout analysis. These steps can be slow, error-prone, and often lose crucial visual context like tables, figures, and formatting. &lt;strong&gt;But what if you could query documents based on &lt;em&gt;how they look&lt;/em&gt;, not just the extracted text?&lt;/strong&gt;&lt;/p&gt;</description>
      </item>
    <item>
        <title>VectorChord 0.3: Bringing Efficient Multi-Vector Contextual Late Interaction in PostgreSQL</title>
        <link>https://vchord.pgsty.com/blog/release/vectorchord-03-bringing-efficient-multi-vector-contextual-late-interaction-in-postgresql/</link>
        <pubDate>Sun, 13 Apr 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/release/vectorchord-03-bringing-efficient-multi-vector-contextual-late-interaction-in-postgresql/</guid>
        <description>&lt;p&gt;We&amp;rsquo;re thrilled to announce the release of &lt;strong&gt;VectorChord 0.3&lt;/strong&gt;, a major milestone that significantly boosts the performance and applicability of advanced vector search techniques directly within your Postgres database! Building on our 0.2 release, which brought ARM support and faster indexing, version 0.3 tackles one of the biggest hurdles in modern retrieval: &lt;strong&gt;efficient multi-vector search with late interaction&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;beyond-single-vectors-why-multi-vector-rocks&#34;&gt;Beyond Single Vectors: Why Multi-Vector Rocks&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;For years, vector search primarily represented entire documents or queries as single, dense vectors. While powerful, this approach involves averaging or compressing complex information into one representation, inevitably leading to a loss of nuance. Imagine trying to capture the entire meaning of a detailed technical document in a single sentence – you&amp;rsquo;d lose specifics!&lt;/p&gt;</description>
      </item>
    <item>
        <title>3 Billion Vectors in PostgreSQL to Protect the Earth</title>
        <link>https://vchord.pgsty.com/blog/post/3-billion-vectors-in-postgresql-to-protect-the-earth/</link>
        <pubDate>Tue, 08 Apr 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/3-billion-vectors-in-postgresql-to-protect-the-earth/</guid>
        <description>&lt;p&gt;Monitoring the health of our planet is one of the most critical challenges of our time. Our planet faces immense environmental pressures, and understanding these changes requires sifting through an unimaginable amount of satellite data – petabytes of pixels captured constantly. From tracking deforestation in the Amazon to identifying illegal mining operations in remote regions or monitoring agricultural impacts on sensitive ecosystems, turning this data into actionable intelligence is paramount.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Vector Search Over PostgreSQL: A Comparative Analysis of Memory and Disk Solutions</title>
        <link>https://vchord.pgsty.com/blog/post/vector-search-over-postgresql-a-comparative-analysis-of-memory-and-disk-solutions/</link>
        <pubDate>Thu, 03 Apr 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/vector-search-over-postgresql-a-comparative-analysis-of-memory-and-disk-solutions/</guid>
        <description>&lt;h2 id=&#34;introduction-real-world-challenges&#34;&gt;Introduction: real-world challenges&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Specialized vector databases aren’t always needed. With PostgreSQL extensions like &lt;a href=&#34;https://github.com/pgvector/pgvector&#34;&gt;pgvector&lt;/a&gt;, &lt;a href=&#34;https://github.com/timescale/pgvectorscale&#34;&gt;pgvectorscale&lt;/a&gt;, &lt;a href=&#34;https://github.com/tensorchord/VectorChord&#34;&gt;VectorChord&lt;/a&gt; (which evolved from &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/&#34;&gt;pgvecto.rs&lt;/a&gt;)****, you get vector search &lt;em&gt;plus&lt;/em&gt; relational power—no extra infrastructure. But adoption isn’t seamless. Here’s what real users say:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;The query &lt;strong&gt;takes 30 seconds&lt;/strong&gt; for the first time and 100ms if it&amp;rsquo;s a repeat query. The problem is very slow IO.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Is it normal to take 3 hours to build the index for 12 million rows with 75 dimension vector?&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;After 13 hours of building index for 200 million vectors of 75 dimensions each, I have noticed a heavy memory usage at 100GB/124GB at 30% of building index, and server will eventually crash.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;We&amp;rsquo;re hitting some challenges, particularly around need for frequent index updates, throughput constraints, lack of parallel index scans and no built-in quantization.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/blockquote&gt;</description>
      </item>
    <item>
        <title>PostgreSQL Full-Text Search: Fast When Done Right (Debunking the Slow Myth)</title>
        <link>https://vchord.pgsty.com/blog/post/postgresql-full-text-search-fast-when-done-right-debunking-the-slow-myth/</link>
        <pubDate>Wed, 02 Apr 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/postgresql-full-text-search-fast-when-done-right-debunking-the-slow-myth/</guid>
        <description>&lt;p&gt;You might have come across discussions or blog posts suggesting that PostgreSQL&amp;rsquo;s built-in full-text search (FTS) struggles with performance compared to dedicated search engines or specialized extensions. A notable recent example comes from &lt;strong&gt;Neon&amp;rsquo;s blog post, &amp;ldquo;Performance Benchmark: pg_search on Neon&amp;rdquo;&lt;/strong&gt; (&lt;a href=&#34;https://neon.tech/blog/pgsearch-on-neon&#34;&gt;link&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;In their benchmark, Neon compared query performance on their database platform &lt;em&gt;with&lt;/em&gt; their &lt;code&gt;pg_search&lt;/code&gt; extension (based on Rust&amp;rsquo;s Tantivy library via &lt;code&gt;pgrx&lt;/code&gt;) against the Postgres built-in fulltext search setting with tsvector and GIN index. They commendably stated they optimized this standard setup by adding GIN indexes where appropriate (benchmark code available &lt;a href=&#34;https://github.com/paradedb/paradedb/tree/dev/benchmarks&#34;&gt;here&lt;/a&gt;).&lt;/p&gt;</description>
      </item>
    <item>
        <title>VectorChord-BM25: Introducing pg_tokenizer—A Standalone, Multilingual Tokenizer for Advanced Search</title>
        <link>https://vchord.pgsty.com/blog/post/vectorchord-bm25-introducing-pgtokenizera-standalone-multilingual-tokenizer-for-advanced-search/</link>
        <pubDate>Wed, 02 Apr 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/vectorchord-bm25-introducing-pgtokenizera-standalone-multilingual-tokenizer-for-advanced-search/</guid>
        <description>&lt;p&gt;We&amp;rsquo;re excited to announce the release of &lt;strong&gt;VectorChord-BM25 version 0.2&lt;/strong&gt;, our PostgreSQL extension designed to bring advanced BM25-based full-text search ranking capabilities directly into your database!&lt;/p&gt;&#xA;&lt;p&gt;VectorChord-BM25 allows you to leverage the power of the BM25 algorithm, a standard in information retrieval, without needing external search engines. This release marks a significant step forward, focusing heavily on enhancing the core text processing component: &lt;strong&gt;tokenization&lt;/strong&gt;, unlocking greater flexibility and &lt;strong&gt;significantly improved multilingual support&lt;/strong&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Hybrid search with Postgres Native BM25 and VectorChord</title>
        <link>https://vchord.pgsty.com/blog/post/hybrid-search-with-postgres-native-bm25-and-vectorchord/</link>
        <pubDate>Thu, 13 Mar 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/hybrid-search-with-postgres-native-bm25-and-vectorchord/</guid>
        <description>&lt;p&gt;In the era of RAG (Retrieval-Augmented Generation), efficiently retrieving relevant data from vast datasets is crucial for businesses and developers. Traditional keyword-based retrieval methods, such as those utilizing &lt;strong&gt;BM25&lt;/strong&gt; as a scoring mechanism, excel in ranking documents based on term frequency and exact keyword matches. This makes them highly effective for structured queries and keyword-heavy content. However, they struggle with understanding synonyms, contextual nuances, and semantic intent. Conversely, vector-based retrieval captures deep semantic meaning, enabling better generalization across varied queries but sometimes sacrificing precision in exact keyword matches. Hybrid Search bridges this gap by combining BM25’s precision with vector search’s contextual understanding, delivering faster, more accurate, and semantically aware results.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Vector Search at 10,000 QPS in PostgreSQL with VectorChord</title>
        <link>https://vchord.pgsty.com/blog/post/vector-search-at-10000-qps-in-postgresql-with-vectorchord/</link>
        <pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/vector-search-at-10000-qps-in-postgresql-with-vectorchord/</guid>
        <description>&lt;p&gt;VectorChord is a PostgreSQL extension designed for scalable, high-performance, and disk-efficient vector similarity search, and serves as the successor to &lt;a href=&#34;https://github.com/tensorchord/pgvecto.rs&#34;&gt;pgvecto.rs&lt;/a&gt;. In our previous &lt;a href=&#34;https://vchord.pgsty.com/blog/post/vectorchord-store-400k-vectors-for-1-in-postgresql/&#34;&gt;blog post&lt;/a&gt;, we showed that with just $250 per month, VectorChord achieved 131 QPS with 0.95 precision on 100 million vectors—demonstrating impressive cost-effective performance for large-scale vector search.&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://cdn.hashnode.com/res/hashnode/image/upload/v1733194599461/eb1cf21d-4eb0-4427-8b39-bbb96d125182.png?auto=compress,format&amp;amp;format=webp&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;p&gt;Building on that success, this post focuses on high performance by exploring how VectorChord can &lt;strong&gt;reach 10,000 QPS in PostgreSQL&lt;/strong&gt;. We’ll walk you through how PostgreSQL’s reliable relational foundation integrates with advanced vector indexing to deliver fast, scalable search capabilities, and provide a production-ready setup along with a detailed architecture guide for managing large-scale vector computations even under heavy loads.&lt;/p&gt;</description>
      </item>
    <item>
        <title>VectorChord-BM25: Revolutionize PostgreSQL Search with BM25 Ranking — 3x Faster Than ElasticSearch</title>
        <link>https://vchord.pgsty.com/blog/post/vectorchord-bm25-revolutionize-postgresql-search-with-bm25-ranking-3x-faster-than-elasticsearch/</link>
        <pubDate>Mon, 24 Feb 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/vectorchord-bm25-revolutionize-postgresql-search-with-bm25-ranking-3x-faster-than-elasticsearch/</guid>
        <description>&lt;p&gt;We’re excited to share something special with you: &lt;strong&gt;VectorChord-BM25&lt;/strong&gt;, a new extension designed to make PostgreSQL’s full-text search even better. Whether you’re building a small app or managing a large-scale system, this tool brings advanced BM25 scoring and ranking right into PostgreSQL, making your searches smarter and faster.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;what-s-new&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;whats-new&#34;&gt;&lt;strong&gt;What’s New?&lt;/strong&gt;&#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;BM25 Scoring &amp;amp; Ranking&lt;/strong&gt;: Get more precise and relevant search results with BM25, helping you find what matters most.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Optimized Indexing&lt;/strong&gt;: Thanks to the Block WeakAnd algorithm, searches are quicker and more efficient, even with large datasets.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Enhanced Tokenization&lt;/strong&gt;: Improved stemming and stop word handling mean better accuracy and smoother performance.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>Do we really need a specialized vector database? (2023)</title>
        <link>https://vchord.pgsty.com/blog/post/do-we-really-need-a-specialized-vector-database-2023/</link>
        <pubDate>Tue, 18 Feb 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/do-we-really-need-a-specialized-vector-database-2023/</guid>
        <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Notice: This article, originally published in 2023, discusses the relevance and necessity of specialized vector databases, particularly in relation to Postgres and its capabilities. For further insights and discussions on this topic, please refer to the following link: &lt;a href=&#34;https://news.ycombinator.com/item?id=37097004&#34;&gt;Do we really need a specialized vector database? | Hacker News&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;With the popularity of LLM (Large Language Model), vector databases have also become a hot topic. With just a few lines of simple Python code, a vector database can act as a cheap but highly effective &amp;ldquo;external brain&amp;rdquo; for your LLM. But do we really need a specialized vector database?&lt;/p&gt;</description>
      </item>
    <item>
        <title>VectorChord 0.2: 60K-Dimensional Vectors, 50% Faster Indexing with ARM</title>
        <link>https://vchord.pgsty.com/blog/release/vectorchord-02-60k-dimensional-vectors-50-faster-indexing-with-arm/</link>
        <pubDate>Mon, 17 Feb 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/release/vectorchord-02-60k-dimensional-vectors-50-faster-indexing-with-arm/</guid>
        <description>&lt;p&gt;Today, we’re thrilled to share VectorChord 0.2—a release shaped by community feedback and designed to tackle the evolving challenges of vector search in PostgreSQL.&lt;/p&gt;&#xA;&lt;p&gt;%[https://github.com/tensorchord/VectorChord/]&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;optimized-storage-layout-supporting-up-to-60-000-dimensions&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;optimized-storage-layout-supporting-up-to-60000-dimensions&#34;&gt;Optimized Storage Layout: Supporting Up to 60,000 Dimensions&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In PostgreSQL, the foundational storage unit is an 8KB page. While this design is robust for many workloads, it introduces constraints for modern use cases like high-dimensional vector search. For instance, pgvector faces a hard limit of 2000 dimensions per vector due to this fixed page size, as larger vectors cannot be indexed within a single page.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Supercharge vector search with ColBERT rerank in PostgreSQL</title>
        <link>https://vchord.pgsty.com/blog/post/supercharge-vector-search-with-colbert-rerank-in-postgresql/</link>
        <pubDate>Thu, 23 Jan 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/supercharge-vector-search-with-colbert-rerank-in-postgresql/</guid>
        <description>&lt;p&gt;Traditional vector search methods typically employ sentence embeddings to locate similar content. However, generating sentence embeddings through pooling token embeddings can potentially sacrifice fine-grained details present at the token level. &lt;a href=&#34;https://github.com/stanford-futuredata/ColBERT&#34;&gt;ColBERT&lt;/a&gt; overcomes this by representing text as token-level multi-vectors rather than a single, aggregated vector. This approach, leveraging contextual late interaction at the token level, allows ColBERT to retain more nuanced information and improve search accuracy compared to methods relying solely on sentence embeddings.&lt;/p&gt;</description>
      </item>
    <item>
        <title>ARM &#43; VectorChord: Affordable, Fast Vector Search</title>
        <link>https://vchord.pgsty.com/blog/post/arm-vectorchord-affordable-fast-vector-search/</link>
        <pubDate>Tue, 21 Jan 2025 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/arm-vectorchord-affordable-fast-vector-search/</guid>
        <description>&lt;p&gt;ARM64 is quietly becoming a go-to for cost-effective cloud servers, especially on AWS. With ARM-based processors like the Graviton series (Graviton3 and Graviton4), you can save a good chunk of money without sacrificing performance. These ARM64 instances are way more affordable than traditional x86 ones, making them a solid choice for balancing cost and performance in the cloud.&lt;/p&gt;&#xA;&lt;p&gt;That said, ARM’s architecture differs from x86, so software that isn’t optimized for it might run slower due to emulation. This is where &lt;strong&gt;VectorChord&lt;/strong&gt; steps in—a PostgreSQL extension designed for scalable, high-performance, and disk-efficient vector similarity search. As the successor to &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/&#34;&gt;pgvecto.rs&lt;/a&gt;, VectorChord lets you store a whopping &lt;strong&gt;400,000 vectors for just $1&lt;/strong&gt;, delivering massive savings: &lt;strong&gt;6x more vectors&lt;/strong&gt; than Pinecone&amp;rsquo;s optimized storage and &lt;strong&gt;26x more&lt;/strong&gt; than pgvector / &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/&#34;&gt;pgvecto.rs&lt;/a&gt; for the same price.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Why HNSW is Not the Answer</title>
        <link>https://vchord.pgsty.com/blog/post/why-hnsw-is-not-the-answer/</link>
        <pubDate>Wed, 18 Dec 2024 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/why-hnsw-is-not-the-answer/</guid>
        <description>&lt;p&gt;HNSW (Hierarchical Navigable Small World) has become the go-to algorithm for many vector databases. Its multi-layered graph structure and ability to efficiently navigate vector embeddings make it particularly appealing. However, despite its apparent advantages, HNSW may not be the optimal solution for large-scale and dynamic vector similarity search. In this blog post, we challenge the dominance of HNSW and explore why disk-based alternatives, such as IVF (Inverted File Index), might be more practical for massive datasets.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Benefits and Steps of External Centroids Building in VectorChord</title>
        <link>https://vchord.pgsty.com/blog/post/benefits-and-steps-of-external-centroids-building-in-vectorchord/</link>
        <pubDate>Tue, 10 Dec 2024 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/benefits-and-steps-of-external-centroids-building-in-vectorchord/</guid>
        <description>&lt;p&gt;Clustering is an important component in vector search, and the k-means algorithm remains one of the most widely used techniques. However, its simplicity comes with a significant drawback: resource-intensive computation can render it impractical for large datasets. This blog explores why this challenge arises and how leveraging external builds to overcome it. We also share insights into our approach to implementing this solution.&lt;/p&gt;&#xA;&lt;h3 id=&#34;why-we-need-it&#34;&gt;Why we need it&#xA;&lt;/h3&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://cdn.hashnode.com/res/hashnode/image/upload/v1733711948118/a8ca38d3-580f-4f20-90b9-03c826289a7c.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;p&gt;VectorChord uses IVF + RaBitQ to perform vector search. The quality of the IVF cluster can heavily affect search precision and speed. K-means usually takes dozens of rounds before convergence. For each round, all the sampled vectors need to be assigned to the nearest cluster. This is the most computationally intensive part. The good news is that this process can be easily parallelized.&lt;/p&gt;</description>
      </item>
    <item>
        <title>VectorChord: Store 400k Vectors for $1 in PostgreSQL</title>
        <link>https://vchord.pgsty.com/blog/post/vectorchord-store-400k-vectors-for-1-in-postgresql/</link>
        <pubDate>Thu, 05 Dec 2024 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/vectorchord-store-400k-vectors-for-1-in-postgresql/</guid>
        <description>&lt;p&gt;We’re pleased to announce our new vector search extension for PostgreSQL, providing a highly cost-effective way to manage large vectors. Using &lt;a href=&#34;https://github.com/tensorchord/VectorChord&#34;&gt;VectorChord&lt;/a&gt;, you can achieve a QPS of 131 with 0.95 precision on 100 million 768-dimensional vectors for the top 10 queries. This setup costs only $250 monthly and can be hosted on a single machine.&lt;/p&gt;&#xA;&lt;p&gt;This means you can &lt;strong&gt;store 400k vectors for only $1&lt;/strong&gt;, allowing you to save significantly: 6x more vectors compared to Pinecone (storage optimized instance) and 26x more than pgvector/pgvecto.rs for the same price.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Introducing PGVecto.rs Cloud - Scalable Vector Search in PostgreSQL, Now in the Cloud</title>
        <link>https://vchord.pgsty.com/blog/post/introducing-pgvectors-cloud-scalable-vector-search-in-postgresql-now-in-the-cloud/</link>
        <pubDate>Fri, 02 Aug 2024 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/introducing-pgvectors-cloud-scalable-vector-search-in-postgresql-now-in-the-cloud/</guid>
        <description>&lt;p&gt;In an exciting development, we are thrilled to announce the launch of &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/&#34;&gt;PGVecto.rs&lt;/a&gt; Cloud - bringing the power of scalable vector search to your PostgreSQL databases, now available as a fully managed cloud service.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/&#34;&gt;PGVecto.rs&lt;/a&gt; is a pioneering Postgres extension that enables high-performance vector search, empowering developers to build advanced similarity-based applications on top of their existing Postgres infrastructure. With &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/&#34;&gt;PGVecto.rs&lt;/a&gt; Cloud, you can now unlock the benefits of this transformative technology without the overhead of managing the extension yourself.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Introducing Terraform Support for PGVecto.rs Cloud</title>
        <link>https://vchord.pgsty.com/blog/post/introducing-terraform-support-for-pgvectors-cloud/</link>
        <pubDate>Wed, 24 Jul 2024 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/introducing-terraform-support-for-pgvectors-cloud/</guid>
        <description>&lt;p&gt;We are thrilled to announce the release of our &lt;a href=&#34;https://registry.terraform.io/providers/tensorchord/pgvecto-rs-cloud/latest&#34;&gt;Terraform provider for PGVecto.rs Cloud&lt;/a&gt;. This new provider is designed to simplify the process of managing resources on our &lt;a href=&#34;https://vchord.pgsty.com/cloud/&#34;&gt;cloud service&lt;/a&gt;, providing users with an intuitive and streamlined experience for managing their Postgres cluster setup and operation through infrastructure as a code tool — &lt;strong&gt;Terraform&lt;/strong&gt;. For those unfamiliar with &lt;a href=&#34;https://www.terraform.io/&#34;&gt;Terraform&lt;/a&gt;, it is an open-source tool for building, changing, and versioning infrastructure safely and efficiently. It enables users to define their infrastructure as code, allowing them to provision and manage resources programmatically.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Unleash the power of sparse vector</title>
        <link>https://vchord.pgsty.com/blog/post/unleash-the-power-of-sparse-vector/</link>
        <pubDate>Fri, 05 Jul 2024 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/unleash-the-power-of-sparse-vector/</guid>
        <description>&lt;p&gt;In the past, hybrid search combined two search methods: traditional keyword-based search and vector-based similarity search. However, sparse vector can act as a substitute for keyword search, unlocking the full potential of the data pipeline with pure vector search.&lt;/p&gt;&#xA;&lt;p&gt;This post explores how to use how &lt;a href=&#34;https://github.com/FlagOpen/FlagEmbedding/tree/master/FlagEmbedding/BGE_M3&#34;&gt;BGE-M3&lt;/a&gt; and &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/&#34;&gt;pgvecto.rs&lt;/a&gt; to exploit the potential of hybrid search using both sparse and dense vectors.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s dive in.&lt;/p&gt;&#xA;&lt;h2 id=&#34;an-overview-of-sparse-and-dense-vector-embedding&#34;&gt;An Overview of Sparse and Dense Vector Embedding&#xA;&lt;/h2&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://cdn.hashnode.com/res/hashnode/image/upload/v1711958357065/ef840509-b58c-4476-9f6d-9d6c698a86a7.png&#34; alt=&#34;Sparse Vector VS Dense Vector&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;p&gt;Sparse vectors are high-dimensional vectors that contain few non-zero values. They are suitable for traditional information retrieval use cases. For example, a vector with 32,000 dimensions but only 2 non-zero elements is a typical sparse vector.&lt;/p&gt;</description>
      </item>
    <item>
        <title>pg_bestmatch.rs: Elevate Your PostgreSQL Text Queries with BM25</title>
        <link>https://vchord.pgsty.com/blog/post/pgbestmatchrs-elevate-your-postgresql-text-queries-with-bm25/</link>
        <pubDate>Fri, 14 Jun 2024 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/pgbestmatchrs-elevate-your-postgresql-text-queries-with-bm25/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-lightbulb&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Tip&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;Update: Check our latest extension VectorChord-BM25 for end2end BM25 ranking in PostgreSQL. Read more at &lt;a href=&#34;https://vchord.pgsty.com/blog/post/vectorchord-bm25-revolutionize-postgresql-search-with-bm25-ranking-3x-faster-than-elasticsearch/&#34;&gt;https://vchord.pgsty.com/blog/post/vectorchord-bm25-revolutionize-postgresql-search-with-bm25-ranking-3x-faster-than-elasticsearch/&lt;/a&gt;&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;%[https://github.com/tensorchord/VectorChord-bm25]&lt;/p&gt;&#xA;&lt;p&gt;We&amp;rsquo;re excited to announce the release of &lt;a href=&#34;https://github.com/tensorchord/pg_bestmatch.rs&#34;&gt;&lt;strong&gt;pg_bestmatch.rs&lt;/strong&gt;&lt;/a&gt;, a PostgreSQL extension that brings the power of Best Matching 25 Score (BM25) text queries to your database, enhancing your ability to perform efficient and accurate text retrieval. This extension allows users to generate BM25 statistic sparse vectors from text, leveraging the proven performance of BM25 in various benchmark tasks.&lt;/p&gt;</description>
      </item>
    <item>
        <title>My binary vector search is better than your FP32 vectors</title>
        <link>https://vchord.pgsty.com/blog/post/my-binary-vector-search-is-better-than-your-fp32-vectors/</link>
        <pubDate>Fri, 22 Mar 2024 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/my-binary-vector-search-is-better-than-your-fp32-vectors/</guid>
        <description>&lt;p&gt;Within the field of vector search, an intriguing development has arisen: binary vector search. This approach shows promise in tackling the long-standing issue of memory consumption by achieving a remarkable 30x reduction. However, a critical aspect that sparks debate is its effect on accuracy.&lt;/p&gt;&#xA;&lt;p&gt;We believe that using binary vector search, along with specific optimization techniques, can maintain similar accuracy. To provide clarity on this subject, we showcase a series of experiments that will demonstrate the effects and implications of this approach.&lt;/p&gt;</description>
      </item>
    <item>
        <title>pgvector vs. pgvecto.rs in 2024: A Comprehensive Comparison for Vector Search in PostgreSQL</title>
        <link>https://vchord.pgsty.com/blog/post/pgvector-vs-pgvectors-in-2024-a-comprehensive-comparison-for-vector-search-in-postgresql/</link>
        <pubDate>Tue, 19 Mar 2024 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/pgvector-vs-pgvectors-in-2024-a-comprehensive-comparison-for-vector-search-in-postgresql/</guid>
        <description>&lt;p&gt;pgvector and &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/&#34;&gt;pgvecto.rs&lt;/a&gt; are both vector search extensions designed to enhance the capabilities of PostgreSQL. These extensions revolutionize the way vector search is performed within the database, providing scalable, low-latency, and hybrid-enabled solutions. In this blog post, we will illustrate the differences between pgvector and &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/&#34;&gt;pgvecto.rs&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;TL; DR: Please navigate directly to the final section that contains a table showcasing the main distinctions between the two.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;Search&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;search&#34;&gt;Search&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Search is essential for a database. It plays a pivotal role in facilitating efficient data retrieval, enabling users to quickly find and access the information they need. We will demonstrate their performance and highlight the various features &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/&#34;&gt;pgvecto.rs&lt;/a&gt; and pgvector offer.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Building LLM Applications in LangChain using  pgvecto.rs</title>
        <link>https://vchord.pgsty.com/blog/post/building-llm-applications-in-langchain-using-pgvectors/</link>
        <pubDate>Fri, 08 Mar 2024 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/building-llm-applications-in-langchain-using-pgvectors/</guid>
        <description>&lt;p&gt;&lt;strong&gt;LangChain&lt;/strong&gt; is a framework for developing applications powered by language models. It enables applications that:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Are context-aware&lt;/strong&gt;: connect a language model to sources of context (prompt instructions, few shot examples, content to ground its response in, etc.)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Reason&lt;/strong&gt;: rely on a language model to reason (about how to answer based on provided context, what actions to take, etc.)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/&#34;&gt;pgvecto.rs&lt;/a&gt; is a vector search extension in Postgres. In this blog post, we&amp;rsquo;ll show you how to build LLM applications with LangChain and pgvecto.rs.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Building the RAG pipeline with LlamaIndex and pgvecto.rs</title>
        <link>https://vchord.pgsty.com/blog/post/building-the-rag-pipeline-with-llamaindex-and-pgvectors/</link>
        <pubDate>Fri, 08 Mar 2024 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/building-the-rag-pipeline-with-llamaindex-and-pgvectors/</guid>
        <description>&lt;p&gt;LlamaIndex is a simple, flexible data framework for connecting custom data sources to large language models (LLMs).&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/&#34;&gt;&lt;code&gt;pgvecto.rs&lt;/code&gt;&lt;/a&gt; provides a LlamaIndex integration that allows you to retrieve the most similar vectors. In this blog post, we will show you how to build a RAG pipeline with pgvecto.rs and LlamaIndex.&lt;/p&gt;&#xA;&lt;h2 id=&#34;install-dependencies&#34;&gt;&lt;strong&gt;Install dependencies&lt;/strong&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Some dependencies are required to use the LlamaIndex integration:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-03663433-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-03663433-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install llama-index &lt;span class=&#34;s2&#34;&gt;&amp;#34;pgvecto_rs[sdk]&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;You could start the Postgres instance with &lt;code&gt;pgvecto.rs&lt;/code&gt; extension in a docker container:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Do we really need a specialized vector database?</title>
        <link>https://vchord.pgsty.com/blog/post/do-we-really-need-a-specialized-vector-database/</link>
        <pubDate>Fri, 08 Mar 2024 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/post/do-we-really-need-a-specialized-vector-database/</guid>
        <description>&lt;p&gt;With the popularity of LLM (Large Language Model), vector databases have also become a hot topic. With just a few lines of simple Python code, a vector database can act as a cheap but highly effective &amp;ldquo;external brain&amp;rdquo; for your LLM. But do we really need a specialized vector database?&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-does-llm-need-vector-search&#34;&gt;&lt;strong&gt;Why does LLM need vector search?&lt;/strong&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;First, let me briefly introduce why LLM needs to use vector search technology. Vector search is a problem that has been around for a long time. The process of finding the most similar object in a collection given an object is vector search. Text/images, etc. can be converted into a vector representation, and the similarity problem of text/images can be transformed into a vector similarity problem.&lt;/p&gt;</description>
      </item>
    <item>
        <title>pgvecto.rs 0.2: Unifying Relational Queries and Vector Search in PostgreSQL</title>
        <link>https://vchord.pgsty.com/blog/release/pgvectors-02-unifying-relational-queries-and-vector-search-in-postgresql/</link>
        <pubDate>Tue, 20 Feb 2024 00:00:00 +0000</pubDate>
        
        <guid>https://vchord.pgsty.com/blog/release/pgvectors-02-unifying-relational-queries-and-vector-search-in-postgresql/</guid>
        <description>&lt;p&gt;We are excited to announce the release of &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/&#34;&gt;pgvecto.rs&lt;/a&gt; 0.2, a significant milestone in the journey of bridging the gap between relational queries and vector search in PostgreSQL. This update brings together the power of both worlds, offering enhanced efficiency and enabling complex queries within PostgreSQL.&lt;/p&gt;&#xA;&lt;p&gt;In the past, developers and data scientists encountered the significant challenge of managing separate systems for relational queries and vector search. This resulted in increased complexity and resource overhead. However, with the release of &lt;a href=&#34;https://vchord.pgsty.com/pgvecto-rs/&#34;&gt;pgvecto.rs&lt;/a&gt; 0.2, we have addressed this issue by integrating the cutting-edge &lt;a href=&#34;https://www.usenix.org/conference/osdi23/presentation/zhang-qianxi&#34;&gt;VBASE method from OSDI 2023&lt;/a&gt;. This integration has substantially refined the efficiency of vector search within PostgreSQL.&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
