Nimiavaruuksien hallinta
Ymmärtäkää, miten data osioidaan yhdessä Pinecone-indeksissä nimiavaruuksien avulla paremman järjestelmällisyyden saavuttamiseksi.
Nimiavaruuksien hallinta on ilmainen Vektoritietokannat: Pinecone, Weaviate ja pgvector-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Vektoritietokannat: Pinecone, Weaviate ja pgvector-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Vektoritietokannat: Pinecone, Weaviate ja pgvector-kurssilla on yhteensä 4 oppituntia.
Mitä Pineconen namespace-nimialueet ovat?
Tervetuloa hallitsemaan Pineconen namespace-nimialueita! Namespace on kuin looginen osio yksittäisen Pinecone-indeksin sisällä.
Ajattele sitä pääkansion sisällä olevana kansiona. Sen avulla voit jakaa tietosi osiin ilman, että sinun tarvitsee luoda kokonaan erillisiä indeksejä.
Miksi namespace-nimialueita käytetään?
Namespace-nimialueet ovat erittäin hyödyllisiä vektoritietojen järjestämisessä etenkin monimutkaisissa sovelluksissa:
- Monivuokraus: eri käyttäjien tai asiakkaiden tietojen eristäminen yhden indeksin sisällä.
- A/B-testaus: upotusten eri versioiden tallentaminen kokeita varten.
- Tietojen eristäminen: erillisten aineistojen pitäminen erillään samalla indeksin infrastruktuurilla.
- Luokittelu: vektorien ryhmittely aiheen, lähteen tai tyypin mukaan.
Oletusnamespace
Jokaisella Pinecone-indeksillä on oletusnamespace. Jos et määritä namespacea erikseen upsert- tai kyselytoiminnon yhteydessä, toiminto kohdistuu tähän oletusnamespaceen.
Se esitetään usein tyhjänä merkkijonona "" tai jättämällä namespace-parametri yksinkertaisesti pois.
Namespace-nimialueiden valmistelu
Varmista ennen namespace-nimialueiden käyttöä, että Pinecone-asiakas on alustettu. Oletamme, että API-avaimesi ja ympäristösi on määritetty, yleensä ympäristömuuttujien avulla.
Tässä on esittelyä varten tarkoitettu perusmääritys:
from pinecone import Pinecone
import os
def main():
# Replace with your actual API key and environment from environment variables
api_key = os.environ.get("PINECONE_API_KEY", "YOUR_API_KEY")
environment = os.environ.get("PINECONE_ENVIRONMENT", "YOUR_ENVIRONMENT")
if api_key == "YOUR_API_KEY" or environment == "YOUR_ENVIRONMENT":
print("Please set PINECONE_API_KEY and PINECONE_ENVIRONMENT env vars.")
return
pc = Pinecone(api_key=api_key, environment=environment)
print("Pinecone client initialized.")
if __name__ == "__main__":
main()Tietojen upsertointi namespace-nimialueeseen
Voit lisätä vektoreita tiettyyn namespace-nimialueeseen lisäämällä namespace-parametrin kutsuun index.upsert().
Tässä esimerkissä muutama vektori upsertoidaan namespace-nimialueeseen nimeltä "product-recommendations".
from pinecone import Pinecone, Index
import os
def main():
api_key = os.environ.get("PINECONE_API_KEY", "YOUR_API_KEY")
environment = os.environ.get("PINECONE_ENVIRONMENT", "YOUR_ENVIRONMENT")
if api_key == "YOUR_API_KEY" or environment == "YOUR_ENVIRONMENT":
print("Please set PINECONE_API_KEY and PINECONE_ENVIRONMENT env vars.")
return
pc = Pinecone(api_key=api_key, environment=environment)
index_name = "my-product-index" # Ensure this index exists
if index_name not in pc.list_indexes():
print(f"Index '{index_name}' does not exist. Please create it first.")
return
index = pc.Index(index_name)
vectors_to_upsert = [
{"id": "item-1", "values": [0.1, 0.2, 0.3]}, # 3 dimensions for example
{"id": "item-2", "values": [0.4, 0.5, 0.6]}
]
# Upsert into a specific namespace
index.upsert(vectors=vectors_to_upsert, namespace="product-recommendations")
print("Vectors upserted into 'product-recommendations' namespace.")
if __name__ == "__main__":
main()Tietyn namespace-nimialueen kysely
Kun haluat hakea vektoreita tietystä namespace-nimialueesta, määritä namespace-parametri myös kutsussa index.query().
Näin varmistat, että haku rajoittuu indeksin kyseiseen osioon.
from pinecone import Pinecone, Index
import os
def main():
api_key = os.environ.get("PINECONE_API_KEY", "YOUR_API_KEY")
environment = os.environ.get("PINECONE_ENVIRONMENT", "YOUR_ENVIRONMENT")
if api_key == "YOUR_API_KEY" or environment == "YOUR_ENVIRONMENT":
print("Please set PINECONE_API_KEY and PINECONE_ENVIRONMENT env vars.")
return
pc = Pinecone(api_key=api_key, environment=environment)
index_name = "my-product-index"
if index_name not in pc.list_indexes():
print(f"Index '{index_name}' does not exist. Please create it first.")
return
index = pc.Index(index_name)
query_vector = [0.15, 0.25, 0.35] # Example query vector
# Query within the 'product-recommendations' namespace
results = index.query(
vector=query_vector,
top_k=2,
namespace="product-recommendations",
include_values=False
)
print("Query results from 'product-recommendations' namespace:")
for match in results.matches:
print(f"ID: {match.id}, Score: {match.score}")
if __name__ == "__main__":
main()Kyselyn laajuuden ymmärtäminen
On tärkeää muistaa, että Pineconen kyselyt kohdistuvat oletusarvoisesti tiettyyn namespace-nimialueeseen. Jos teet kyselyn määrittämättä namespacea, haku kohdistuu vain oletusnamespaceen.
Kaikista namespace-nimialueista ei voi tehdä kyselyä yhdellä API-kutsulla. Jos haluat yhdistää tulokset, sinun on tehtävä kysely jokaiseen namespaceen erikseen.
Indeksin namespace-nimialueiden luetteleminen
Näet indeksissä tällä hetkellä olevat namespace-nimialueet ja niiden tilastot käyttämällä metodia index.describe_index_stats().
Se palauttaa yhteenvedon, joka sisältää namespace-nimialueiden kuvauksen ja vektorien määrät.
from pinecone import Pinecone, Index
import os
def main():
api_key = os.environ.get("PINECONE_API_KEY", "YOUR_API_KEY")
environment = os.environ.get("PINECONE_ENVIRONMENT", "YOUR_ENVIRONMENT")
if api_key == "YOUR_API_KEY" or environment == "YOUR_ENVIRONMENT":
print("Please set PINECONE_API_KEY and PINECONE_ENVIRONMENT env vars.")
return
pc = Pinecone(api_key=api_key, environment=environment)
index_name = "my-product-index"
if index_name not in pc.list_indexes():
print(f"Index '{index_name}' does not exist. Please create it first.")
return
index = pc.Index(index_name)
# Get index statistics
index_stats = index.describe_index_stats()
print("Namespaces in index:")
for ns, stats in index_stats.namespaces.items():
print(f"- Namespace: '{ns}', Vector Count: {stats.vector_count}")
if __name__ == "__main__":
main()Vektorien poistaminen namespace-nimialueesta
Voit poistaa tiettyjä vektoreita namespace-nimialueesta antamalla niiden tunnisteet ja namespace-parametrin metodille index.delete().
Tässä esimerkissä poistetaan tietty kohde namespace-nimialueesta "product-recommendations".
from pinecone import Pinecone, Index
import os
def main():
api_key = os.environ.get("PINECONE_API_KEY", "YOUR_API_KEY")
environment = os.environ.get("PINECONE_ENVIRONMENT", "YOUR_ENVIRONMENT")
if api_key == "YOUR_API_KEY" or environment == "YOUR_ENVIRONMENT":
print("Please set PINECONE_API_KEY and PINECONE_ENVIRONMENT env vars.")
return
pc = Pinecone(api_key=api_key, environment=environment)
index_name = "my-product-index"
if index_name not in pc.list_indexes():
print(f"Index '{index_name}' does not exist. Please create it first.")
return
index = pc.Index(index_name)
# Delete a specific vector by ID within a namespace
index.delete(ids=["item-1"], namespace="product-recommendations")
print("Vector 'item-1' deleted from 'product-recommendations' namespace.")
if __name__ == "__main__":
main()Kokonaisen namespace-nimialueen poistaminen
Voit poistaa kaikki tietyn namespace-nimialueen vektorit ja siten käytännössä poistaa koko namespace-nimialueen käyttämällä index.delete()-metodia, antamalla sille namespace-parametrin ja asettamalla arvoksi delete_all=True.
Ole varovainen: toiminto on peruuttamaton ja poistaa kaikki kyseisen namespace-nimialueen tiedot!
from pinecone import Pinecone, Index
import os
def main():
api_key = os.environ.get("PINECONE_API_KEY", "YOUR_API_KEY")
environment = os.environ.get("PINECONE_ENVIRONMENT", "YOUR_ENVIRONMENT")
if api_key == "YOUR_API_KEY" or environment == "YOUR_ENVIRONMENT":
print("Please set PINECONE_API_KEY and PINECONE_ENVIRONMENT env vars.")
return
pc = Pinecone(api_key=api_key, environment=environment)
index_name = "my-product-index"
if index_name not in pc.list_indexes():
print(f"Index '{index_name}' does not exist. Please create it first.")
return
index = pc.Index(index_name)
# Delete all vectors within a specific namespace
# This effectively removes the 'test-namespace' and all its contents
index.delete(namespace="test-namespace", delete_all=True)
print("All vectors in 'test-namespace' deleted. Namespace effectively removed.")
if __name__ == "__main__":
main()Namespace-nimialueita koskeva tietotesti
Sinulla on indeksi nimeltä "my-app-index". Upsertoit vektoreita namespace-nimialueisiin "user-1" ja "user-2". Mitä tapahtuu, jos kutsut tämän jälkeen index.query(vector=my_vec, top_k=5) määrittämättä namespace-parametria?
Kertaus: järjestä tiedot namespace-nimialueilla
Hienoa työtä! Olet tutustunut Pineconen namespace-nimialueiden hyötyihin.
- Namespace-nimialueet auttavat jakamaan tiedot osiin yhden indeksin sisällä.
- Ne sopivat erinomaisesti monivuokraukseen ja A/B-testaukseen.
- Toiminnot (upsert, query, delete) ovat namespace-kohtaisia.
- Oletusnamespacea käytetään, jos muuta ei määritetä.
- Voit luetella olemassa olevat namespace-nimialueet ja poistaa kokonaisia namespace-nimialueita.
Namespace-nimialueiden tehokas käyttö pitää vektoritietosi järjestyksessä ja helposti hallittavina!
Opi Vektoritietokannat: Pinecone, Weaviate ja pgvector tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 12
- Oppitunnit
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Nimiavaruuksien hallinta” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Vektoritietokannat: Pinecone, Weaviate ja pgvector-oppimispolun 3 oppituntia, myös oppitunnin “Nimiavaruuksien hallinta”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Vektoritietokannat: Pinecone, Weaviate ja pgvector-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Nimiavaruuksien hallinta”?
Ymmärtäkää, miten data osioidaan yhdessä Pinecone-indeksissä nimiavaruuksien avulla paremman järjestelmällisyyden saavuttamiseksi. Harjoittelet Vektoritietokannat: Pinecone, Weaviate ja pgvector-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Vektoritietokannat: Pinecone, Weaviate ja pgvector-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Vektoritietokannat: Pinecone, Weaviate ja pgvector-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Nimiavaruuksien hallinta”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Vektoritietokannat: Pinecone, Weaviate ja pgvector-oppitunnilla?
Kyllä. Jokainen Vektoritietokannat: Pinecone, Weaviate ja pgvector-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Suodatus metatietojen avulla
- Nimiavaruuksien hallinta
- Reaaliaikaiset päivitykset ja poistot
- Hybridihaku harvoilla ja tiheillä vektoreilla