Kokoteksti- ja vektorihaku Neo4j:ssä
Siirry täsmällisten hakujen ohi lisäämällä Neo4j:hin kokoteksti- ja vektori-indeksejä. Näin mahdollistat epätarkan tekstinhaun ja semanttisen samankaltaisuuden kyselyt sekä laajennat tietokantaa moderneihin haku- ja tekoälykuormiin.
Kokoteksti- ja vektorihaku Neo4j:ssä on ilmainen Neo4j-graafitietokantojen perusteet-oppitunti CoddyKitissä. Tämä on oppitunti 4/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 Neo4j-graafitietokantojen perusteet-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Neo4j-graafitietokantojen perusteet-kurssilla on yhteensä 4 oppituntia.
Miksi hakuindeksit ovat tärkeitä
Neo4j:n tavalliset ominaisuushaut sopivat erinomaisesti täsmällisiin osumiin, mutta todelliset sovellukset tarvitsevat enemmän. Käyttäjät kirjoittavat sanoja väärin, hakevat useista kentistä ja odottavat yhä useammin semanttisia tuloksia.
Neo4j laajentaa ominaisuuksiaan kahdella erityisellä indeksityypillä:
- Full-text-indeksit epätarkkaan, usean kentän tekstihakuun
- Vektori-indeksit upotusten samankaltaisuushakuun
Molemmat ovat keskeisiä ominaisuuksia, joita voitte hallita Cypherillä.
Full-text-indeksin luominen
Full-text-indeksi muodostetaan yhden tai useamman solmun tarran ja ominaisuuden perusteella. Luomisen jälkeen se mahdollistaa tokenisoidun, kirjainkoosta riippumattoman haun.
Esimerkissä luodaan movieSearch-niminen indeksi Movie-solmujen title- ja plot-ominaisuuksille.
CREATE FULLTEXT INDEX movieSearch
FOR (m:Movie)
ON EACH [m.title, m.plot];Full-text-indeksin kysely
Full-text-indeksejä kysellään db.index.fulltext.queryNodes-proseduurilla. Se palauttaa osuvat solmut sekä osuvuuden score.
Tämä Lucene-tyylinen syntaksi tukee jokerimerkkejä, epätarkkaa hakua merkillä ~ ja Boolen operaattoreita.
CALL db.index.fulltext.queryNodes('movieSearch', 'matrix~')
YIELD node, score
RETURN node.title AS title, score
ORDER BY score DESC;Epätarkat haut ja jokerimerkit
Full-text-haku on parhaimmillaan epätäydellisillä syötteillä. Muutamia yleisiä operaattoreita:
star~— epätarkka haku, joka sietää kirjoitusvirheitästar*— etuliitteen jokerimerkkititle:matrix— rajaa haun yhteen kenttäänmatrix AND reloaded— Boolen yhdistelmä
Näiden avulla yksi kysely käsittelee käyttäjien todellisuudessa kirjoittamia sekavia hakulausekkeita.
CALL db.index.fulltext.queryNodes('movieSearch', 'title:matr*')
YIELD node, score
RETURN node.title, score;Mitä vektoriupotukset ovat
Vektoriupotus on numerosarja, joka kuvaa tekstin, kuvan tai muun datan merkitystä. Merkitykseltään samankaltaisilla kohteilla on samansuuntaiset vektorit.
Tallentamalla upotuksen solmun ominaisuudeksi Neo4j voi vastata esimerkiksi kysymykseen etsi tätä lähinnä semanttisesti vastaavat asiakirjat — eikä vain etsiä avainsanojen osumia.
Vektori-indeksin luominen
Vektori-indeksiä luotaessa on ilmoitettava ulottuvuus (upotuksen pituus) ja samankaltaisuusfunktio (cosine tai euclidean).
db.index.vector.createNodeIndex-proseduuri luo indeksin tarran ja ominaisuuden perusteella. Tässä indeksoimme Document-solmuihin tallennetun 1536-ulotteisen upotuksen.
CALL db.index.vector.createNodeIndex(
'docEmbedding',
'Document',
'embedding',
1536,
'cosine'
);Upotuksen tallentaminen solmuun
Upotukset tuotetaan yleensä ulkoisella mallilla ja kirjoitetaan takaisin Neo4j:hin. db.create.setNodeVectorProperty-proseduuri tallentaa liukulukutaulukon tehokkaasti.
Käytännössä taulukko sisältää satoja tai tuhansia arvoja, mutta tässä sitä on lyhennetty luettavuuden vuoksi.
MATCH (d:Document {id: 'doc-1'})
CALL db.create.setNodeVectorProperty(d, 'embedding', [0.12, -0.04, 0.88])
RETURN d.id;Samankaltaisten solmujen haku
Lähimpien naapureiden löytämiseksi kutsukaa db.index.vector.queryNodes-proseduuria ja antakaa sille indeksin nimi, tulosten määrä ja kyselyvektori.
Se palauttaa solmut samankaltaisuuden mukaan järjestettyinä sekä arvon score, joka on välillä 0–1.
CALL db.index.vector.queryNodes('docEmbedding', 5, [0.10, -0.02, 0.90])
YIELD node, score
RETURN node.title AS title, score
ORDER BY score DESC;Haun yhdistäminen graafiin
Neo4j:n todellinen voima piilee haun ja graafissa kulkemisen yhdistämisessä. Voitte etsiä semanttisesti samankaltaisia asiakirjoja ja seurata sitten suhteita tulosten rikastamiseksi.
Tämä kysely etsii samankaltaisia asiakirjoja ja palauttaa niiden tekijät — pelkkä vektoritietokanta ei pysty tähän yhdellä vaiheella.
CALL db.index.vector.queryNodes('docEmbedding', 3, [0.1, -0.02, 0.9])
YIELD node, score
MATCH (node)<-[:WROTE]-(a:Author)
RETURN node.title, a.name, score;Hakuindeksien hallinta
Kuten minkä tahansa indeksin, myös full-text- ja vektori-indeksit voi luetella ja poistaa. Tarkastelkaa niitä komennolla SHOW INDEXES ja poistakaa indeksi komennolla DROP INDEX.
Tarkistakaa aina, että indeksi on tilassa ONLINE, ennen kuin luotatte siihen tuotantokyselyissä.
SHOW INDEXES
WHERE type IN ['FULLTEXT', 'VECTOR'];
// Remove one:
DROP INDEX docEmbedding IF EXISTS;Parhaat käytännöt
Hyödyntäkää hakuindeksejä mahdollisimman tehokkaasti:
- Pidätte upotusten ulottuvuudet yhdenmukaisina mallin tulosteen kanssa
- Valitsette useimmille tekst upotuksille
cosine-samankaltaisuuden - Luotte upotukset uudelleen ja päivitätte vektorit, kun lähdedata muuttuu
- Rajoitatte tulosten määrää ja suodatatte niitä jälkikäteen Cypherillä osuvuuden perusteella
Näillä toimintatavoilla haut pysyvät nopeina ja tarkkoina datan kasvaessa.
Pikatesti
Testatkaa ymmärrystänne Neo4j:n hakuindekseistä.
Kertaus
Laajensitte Neo4j:tä kahdella tehokkaalla hakuominaisuudella:
- Full-text-indeksit — tokenisoitu, epätarkka ja usean kentän avainsanahaku
db.index.fulltext.queryNodes-proseduurilla - Vektori-indeksit — upotusten semanttinen samankaltaisuushaku
db.index.vector.queryNodes-proseduurilla
Parasta on, että molemmat integroituvat graafissa kulkemiseen, joten voitte yhdistää haun osuvuuden ja suhteiden tarjoaman kontekstin yhteen Cypher-kyselyyn.
Opi Neo4j-graafitietokantojen perusteet 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 ”Kokoteksti- ja vektorihaku Neo4j:ssä” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Neo4j-graafitietokantojen perusteet-oppimispolun 3 oppituntia, myös oppitunnin “Kokoteksti- ja vektorihaku Neo4j:ssä”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Neo4j-graafitietokantojen perusteet-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Kokoteksti- ja vektorihaku Neo4j:ssä”?
Siirry täsmällisten hakujen ohi lisäämällä Neo4j:hin kokoteksti- ja vektori-indeksejä. Näin mahdollistat epätarkan tekstinhaun ja semanttisen samankaltaisuuden kyselyt sekä laajennat tietokantaa mode… Harjoittelet Neo4j-graafitietokantojen perusteet-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Neo4j-graafitietokantojen perusteet-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Neo4j-graafitietokantojen perusteet-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Kokoteksti- ja vektorihaku Neo4j:ssä”-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ä Neo4j-graafitietokantojen perusteet-oppitunnilla?
Kyllä. Jokainen Neo4j-graafitietokantojen perusteet-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
- Tallennetut proseduurit ja UDF:t
- Integrointi BI- ja visualisointityökaluihin
- Edistyneet tietojen syöttöputket
- Kokoteksti- ja vektorihaku Neo4j:ssä