Weaviate GraphQL-frågor
Bemästra hur ni frågar efter Weaviate-data med dess kraftfulla GraphQL-API för semantisk sökning och datahämtning.
Weaviate GraphQL-frågor är en gratis lektion i Vektordatabaser: Pinecone, Weaviate och pgvector på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Vektordatabaser: Pinecone, Weaviate och pgvector, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Vektordatabaser: Pinecone, Weaviate och pgvector innehåller totalt 4 lektioner.
Kraften i Weaviates GraphQL
Välkomna! I den här lektionen får ni lära er att behärska frågor mot era Weaviate-data. Weaviate använder GraphQL, ett kraftfullt frågespråk, för flexibel och effektiv datahämtning.
Med GraphQL kan ni begära exakt de data ni behöver, varken mer eller mindre. Det är särskilt användbart för komplexa sökningar, inklusive vektorlikhet.
Grundläggande datahämtning: Get
Grunden för frågor i Weaviate är operationen Get. Den låter er hämta dataobjekt från en specifik klass som har definierats i schemat.
- Ange klassnamnet (till exempel
Article). - Välj de egenskaper som ni vill hämta (till exempel
titleochcontent). - Weaviate returnerar alla objekt i klassen med de angivna egenskaperna.
Exempel: hämta alla objekt
Vi ska se en enkel Get-fråga i praktiken. Den här Python-koden ansluter till er Weaviate-instans och hämtar title och content för alla Article-objekt.
(Kontrollera att ni har en Weaviate-instans som körs lokalt på http://localhost:8080 och en 'Article'-klass med data.)
import weaviate
# Connect to your Weaviate instance
# For local: http://localhost:8080
client = weaviate.Client(url="http://localhost:8080")
# Perform a basic Get query for 'Article' objects
try:
response = client.query.get("Article", ["title", "content"]).do()
print("--- Retrieved Articles ---")
for article in response["data"]["Get"]["Article"]:
print(f"Title: {article['title']}")
except Exception as e:
print(f"Error during query: {e}")Filtrera data med 'where'
Ofta vill ni inte hämta alla objekt, utan bara vissa. Filtret where låter er lägga till villkor i era frågor och begränsa resultaten.
- Ni kan filtrera efter egenskapsvärden (text, tal, booleska värden och datum).
- Använd operatorer som
Equal,LikeochGreaterThan>. - Kombinera flera villkor med satserna
_andeller_or.
Filtrera efter egenskapsvärde
Det här exemplet visar hur ni använder filtret where för att hitta artiklar skrivna av en viss författare. Vi letar efter artiklar där egenskapen author matchar 'Jane Doe'.
import weaviate
client = weaviate.Client(url="http://localhost:8080")
# Define the 'where' filter
where_filter = {
"path": ["author"],
"operator": "Equal",
"valueText": "Jane Doe"
}
# Perform the Get query with the filter
try:
response = client.query.get("Article", ["title", "author"])
.with_where(where_filter).do()
print("--- Articles by Jane Doe ---")
for article in response["data"]["Get"]["Article"]:
print(f"Title: {article['title']}, Author: {article['author']}")
except Exception as e:
print(f"Error during query: {e}")Hämta vektor-embeddings
Weaviate lagrar en vektor-embedding för varje objekt, som representerar dess semantiska innebörd. Ni kan hämta den här vektorn direkt som en del av er GraphQL-fråga.
Det gör ni med satsen _additional { vector }. Det är användbart för felsökning, för att förstå era data eller för att utföra egna operationer utanför Weaviate.
Hämta vektor-embedding
Så här hämtar ni vektor-embeddingen tillsammans med andra egenskaper. Vi hämtar title och vector för den första artikeln som hittas.
import weaviate
client = weaviate.Client(url="http://localhost:8080")
# Query for a title and its vector
try:
response = client.query.get("Article", ["title"])
.with_additional("vector")
.with_limit(1).do()
print("--- Article Title and Vector ---")
if response["data"]["Get"]["Article"]:
article = response["data"]["Get"]["Article"][0]
print(f"Title: {article['title']}")
print(f"Vector (first 5 elements): {article['_additional']['vector'][:5]}...")
else:
print("No articles found.")
except Exception as e:
print(f"Error during query: {e}")Kraftfull semantisk sökning
En av Weaviates främsta styrkor är semantisk sökning. I stället för att matcha nyckelord hittar den dataobjekt utifrån deras innebörd, även när de exakta orden inte finns med.
Detta åstadkoms med operatorn nearText. Ni anger 'concepts' (text), så använder Weaviate dem för att hitta de objekt i databasen som är semantiskt mest lika.
Hitta liknande artiklar
Vi utför en semantisk sökning för att hitta artiklar som handlar om 'machine learning applications'. Observera hur vi använder with_near_text och anger våra frågekoncept.
import weaviate
client = weaviate.Client(url="http://localhost:8080")
# Define the concepts for semantic search
concepts = ["machine learning applications"]
# Perform a nearText query
try:
response = client.query.get("Article", ["title", "content"])
.with_near_text({"concepts": concepts})
.with_limit(3).do()
print("--- Articles similar to 'machine learning applications' ---")
for article in response["data"]["Get"]["Article"]:
print(f"Title: {article['title']}")
except Exception as e:
print(f"Error during query: {e}")Utmaning: GraphQL-frågor
Ni har lärt er flera sätt att fråga efter data i Weaviate med GraphQL.
Vilken av följande GraphQL-frågeoperationer används specifikt för att hitta dataobjekt som är semantiskt lika ett angivet textkoncept?
Sammanfattning: Weaviate-frågor
Bra arbete! Ni behärskar nu grunderna i Weaviates kraftfulla GraphQL API:
- Operationen
Gethämtar dataobjekt och deras egenskaper. - Filtret
wherelåter er tillämpa exakta villkor på era sökningar. - Ni kan uttryckligen hämta ett objekts vektor-embedding med
_additional { vector }. - Operatorn
nearTextmöjliggör semantisk sökning genom att hitta objekt utifrån deras innebörd.
Med dessa verktyg kan ni effektivt hämta och utforska era vektordata i Weaviate!
Lär dig Vektordatabaser: Pinecone, Weaviate och pgvector med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Weaviate GraphQL-frågor” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Vektordatabaser: Pinecone, Weaviate och pgvector, inklusive ”Weaviate GraphQL-frågor”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Vektordatabaser: Pinecone, Weaviate och pgvector innehåller totalt 4 lektioner.
Vad lär jag mig i ”Weaviate GraphQL-frågor”?
Bemästra hur ni frågar efter Weaviate-data med dess kraftfulla GraphQL-API för semantisk sökning och datahämtning. Ni övar på Vektordatabaser: Pinecone, Weaviate och pgvector med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Vektordatabaser: Pinecone, Weaviate och pgvector?
Du behöver inga förkunskaper. Utbildningen i Vektordatabaser: Pinecone, Weaviate och pgvector på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Weaviate GraphQL-frågor”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Vektordatabaser: Pinecone, Weaviate och pgvector-lektionen?
Ja. Varje Vektordatabaser: Pinecone, Weaviate och pgvector-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Definiera Weaviate-scheman
- Importera dataobjekt
- Weaviate GraphQL-frågor
- Vectorizer-moduler och automatisk embedding