<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://mediawiki.wissen-ahrensburg.de/index.php?action=history&amp;feed=atom&amp;title=Wissen_%2F_Daten_%2F_PostgreSQL_%2B_pgvector</id>
	<title>Wissen / Daten / PostgreSQL + pgvector - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.wissen-ahrensburg.de/index.php?action=history&amp;feed=atom&amp;title=Wissen_%2F_Daten_%2F_PostgreSQL_%2B_pgvector"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.wissen-ahrensburg.de/index.php?title=Wissen_/_Daten_/_PostgreSQL_%2B_pgvector&amp;action=history"/>
	<updated>2026-08-19T22:15:41Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Dokument</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mediawiki.wissen-ahrensburg.de/index.php?title=Wissen_/_Daten_/_PostgreSQL_%2B_pgvector&amp;diff=3612&amp;oldid=prev</id>
		<title>imported&gt;Thorsten Klöhn: Import aus Zensical-Doku (Wissen Ahrensburg)</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.wissen-ahrensburg.de/index.php?title=Wissen_/_Daten_/_PostgreSQL_%2B_pgvector&amp;diff=3612&amp;oldid=prev"/>
		<updated>2026-08-09T12:31:24Z</updated>

		<summary type="html">&lt;p&gt;Import aus Zensical-Doku (Wissen Ahrensburg)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;span id=&amp;quot;praxis-guide-postgresql--pgvector-semantische-suche-in-der-praxis&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Praxis-Guide: PostgreSQL + pgvector (Semantische Suche in der Praxis) =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;pgvector&amp;lt;/code&amp;gt; ist eine Open-Source-Erweiterung für PostgreSQL, die Vektoreinbettungen (Embeddings) direkt in deiner relationalen PostgreSQL-Datenbank speichert und hocheffizient durchsucht.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;hammer_and_wrench-1-installation--aktivierung&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 🛠️ 1. Installation &amp;amp;amp; Aktivierung ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;extension-in-postgresql-aktivieren&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Extension in PostgreSQL aktivieren ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;CREATE EXTENSION IF NOT EXISTS vector;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bar_chart-2-tabellen-setup--vektor-indizierung&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 📊 2. Tabellen-Setup &amp;amp;amp; Vektor-Indizierung ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;tabelle-mit-vektor-spalte-erstellen&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Tabelle mit Vektor-Spalte erstellen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;CREATE TABLE dokumente (&lt;br /&gt;
    id BIGSERIAL PRIMARY KEY,&lt;br /&gt;
    titel TEXT NOT NULL,&lt;br /&gt;
    inhalt TEXT NOT NULL,&lt;br /&gt;
    embedding VECTOR(1536), -- 1536 Dimensionen (z. B. OpenAI text-embedding-3-small)&lt;br /&gt;
    erstellt_am TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP&lt;br /&gt;
);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;hnsw-index-für-ultraschnelle-ähnlichkeitssuche-anlegen&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== HNSW-Index für ultraschnelle Ähnlichkeitssuche anlegen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;-- Hierarchical Navigable Small World (HNSW) Index für Kosinus-Ähnlichkeit&lt;br /&gt;
CREATE INDEX ON dokumente &lt;br /&gt;
USING hnsw (embedding vector_cosine_ops)&lt;br /&gt;
WITH (m = 16, ef_construction = 64);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;mag-3-daten-einfügen--semantische-suche&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 🔍 3. Daten einfügen &amp;amp;amp; Semantische Suche ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;vektor-daten-einfügen&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Vektor-Daten einfügen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;INSERT INTO dokumente (titel, inhalt, embedding)&lt;br /&gt;
VALUES (&lt;br /&gt;
    &amp;#039;Nginx SSL Anleitung&amp;#039;,&lt;br /&gt;
    &amp;#039;So konfigurierst du Let&amp;#039;&amp;#039;s Encrypt SSL-Zertifikate in Nginx.&amp;#039;,&lt;br /&gt;
    &amp;#039;[-0.012, 0.045, 0.003, ...]&amp;#039; -- Array mit 1536 Zahlen&lt;br /&gt;
);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;k-nearest-neighbors-k-nn-abfrage-ausführen&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== K-Nearest-Neighbors (k-NN) Abfrage ausführen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;-- Finde die 3 ähnlichsten Dokumente basierend auf der Kosinus-Distanz (&amp;lt;=&amp;gt;)&lt;br /&gt;
SELECT &lt;br /&gt;
    id, &lt;br /&gt;
    titel, &lt;br /&gt;
    1 - (embedding &amp;lt;=&amp;gt; &amp;#039;[-0.010, 0.042, 0.001, ...]&amp;#039;) AS aehnlichkeit&lt;br /&gt;
FROM dokumente&lt;br /&gt;
ORDER BY embedding &amp;lt;=&amp;gt; &amp;#039;[-0.010, 0.042, 0.001, ...]&amp;#039;&lt;br /&gt;
LIMIT 3;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;snake-4-python-integration-mit-psycopg3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 🐍 4. Python-Integration mit Psycopg3 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;import psycopg&lt;br /&gt;
from pgvector.psycopg import register_vector&lt;br /&gt;
&lt;br /&gt;
# Verbindung aufbauen&lt;br /&gt;
conn = psycopg.connect(&amp;quot;dbname=dokumente_db user=postgres password=geheim host=localhost&amp;quot;)&lt;br /&gt;
register_vector(conn)&lt;br /&gt;
&lt;br /&gt;
# Vektorsuche abfragen&lt;br /&gt;
query_embedding = [0.012, -0.034, ...] # 1536 Float-Werte&lt;br /&gt;
&lt;br /&gt;
with conn.cursor() as cur:&lt;br /&gt;
    cur.execute(&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        SELECT titel, inhalt, 1 - (embedding &amp;lt;=&amp;gt; %s) AS score&lt;br /&gt;
        FROM dokumente&lt;br /&gt;
        ORDER BY embedding &amp;lt;=&amp;gt; %s&lt;br /&gt;
        LIMIT 5&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;, (query_embedding, query_embedding))&lt;br /&gt;
    &lt;br /&gt;
    for row in cur.fetchall():&lt;br /&gt;
        print(f&amp;quot;[{row[2]:.2f}] {row[0]}: {row[1][:50]}...&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;link-verwandte-themen&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 🔗 Verwandte Themen ==&lt;br /&gt;
&lt;br /&gt;
* [[Wissen / Daten / Datenbanken|Datenbanken Übersicht]] – Vektordatenbank-Überblick&lt;br /&gt;
* [[KI &amp;amp; Automatisierung / KI-Coding / LLM &amp;amp; Serving / Lokales RAG &amp;amp; LLM-Serving|Lokales RAG &amp;amp;amp; LLM-Serving]] – RAG mit Ollama&lt;br /&gt;
* [[Wissen / Dokumentation / Wissensdatenbanken mit KI &amp;amp; semantischer Suche|Wissensdatenbanken mit KI &amp;amp;amp; semantischer Suche]] – Einordnung von pgvector im Vergleich zu LanceDB, Qdrant, Milvus &amp;amp;amp; Co.&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Thorsten Klöhn</name></author>
	</entry>
</feed>