Semantische Suche mit Pinecone

KI-Anwendungen mit Pinecone entwickeln

James Chapman

Curriculum Manager, DataCamp

Semantische Suchmaschinen

  1. Dokumente einbetten und in einen Pinecone-Index laden
  2. Nutzeranfrage einbetten
  3. Mit der eingebetteten Anfrage den Index abfragen

semantische Suche

KI-Anwendungen mit Pinecone entwickeln

Pinecone und OpenAI für semantische Suche einrichten

from openai import OpenAI
from pinecone import Pinecone, ServerlessSpec

client = OpenAI(api_key="OPENAI_API_KEY")
pc = Pinecone(api_key="PINECONE_API_KEY")


pc.create_index( name="semantic-search-datacamp",
dimension=1536,
spec=ServerlessSpec(cloud='aws', region='us-east-1') )
index = pc.Index("semantic-search-datacamp")
KI-Anwendungen mit Pinecone entwickeln

Dokumente in den Pinecone-Index laden

import pandas as pd
import numpy as np
from uuid import uuid4

df = pd.read_csv('squad_dataset.csv')
| id | text                                              | title             |
|----|---------------------------------------------------|-------------------|
| 1  | Architektonisch hat die Schule einen katholisc... | University of ... |
| 2  | Das College of Engineering wurde gegründet im... | University of ... |
| 3  | Nach der Auflösung von Destiny's Child im Jahr... | Beyonce           |
| 4  | Architektonisch hat die Schule einen katholisc... | University of ... |
KI-Anwendungen mit Pinecone entwickeln

Dokumente in den Pinecone-Index laden

batch_limit = 100


for batch in np.array_split(df, len(df) / batch_limit):
metadatas = [{"text_id": row['id'], "text": row['text'], "title": row['title']} for _, row in batch.iterrows()]
texts = batch['text'].tolist()
ids = [str(uuid4()) for _ in range(len(texts))]
response = client.embeddings.create(input=texts, model="text-embedding-3-small") embeds = [np.array(x.embedding) for x in response.data]
index.upsert(vectors=zip(ids, embeds, metadatas), namespace="squad_dataset")
KI-Anwendungen mit Pinecone entwickeln

Dokumente in den Pinecone-Index laden

index.describe_index_stats()
{'dimension': 1536, 'index_fullness': 0.02,
 'namespaces': {'squad_dataset': {'vector_count': 2000}},
 'total_vector_count': 2000}
KI-Anwendungen mit Pinecone entwickeln

Abfragen mit Pinecone

query = "To whom did the Virgin Mary allegedly appear in 1858 in Lourdes France?"

query_response = client.embeddings.create( input=query, model="text-embedding-3-small") query_emb = query_response.data[0].embedding
retrieved_docs = index.query(vector=query_emb, top_k=3, namespace=namespace, include_metadata=True)
KI-Anwendungen mit Pinecone entwickeln

Abfragen mit Pinecone

for result in retrieved_docs['matches']:
    print(f"{round(result['score'], 2)}: {result['metadata']['text']}")
0.41: Architektonisch hat die Schule einen katholischen Charakter. Auf der goldenen 
Kuppel des Hauptgebäudes steht eine goldene Statue der Jungfrau Maria...

0.3: Wegen ihrer katholischen Identität gibt es auf dem Campus mehrere religiöse 
Gebäude. Das Old College ist eines von zwei Priesterseminaren...

0.29: Im weißen Schild die fünf Quinas (kleine blaue Schilde) mit 
je fünf weißen Bezants, die die fünf Wunden darstellen...
KI-Anwendungen mit Pinecone entwickeln

Zeit, es zu bauen!

KI-Anwendungen mit Pinecone entwickeln

Preparing Video For Download...