Teknologian jakaminen

[Tekoälyn suuren mallin sovelluskehitys] Minimaalinen johdatus tekoälyn tietokaavioon: vaihe vaiheelta opastaa sinua kokemaan LangChain, jotta voit toteuttaa tietograafin luomisen ja kyselyn (koodi- ja lähdekoodianalyysillä)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Graafitietokantojen tai tietograafien käyttö suurissa mallisovelluksissa on tullut viime aikoina yhä suositummaksi. Kaavioilla on luonnollisia etuja erilaisten ja toisiinsa liittyvien tietojen esittämisessä ja tallentamisessa, ja ne voivat helposti kaapata monimutkaisia ​​suhteita ja attribuutteja eri tietotyyppien välillä, mikä tarjoaa paremman kontekstin tai datatuen suurille malleille. Tässä artikkelissa tarkastellaan kaaviotietokantojen tai tietokaavioiden käyttöä suurissa mallisovelluksissa.

Tämä artikkeli on vain yksinkertainen johdanto ja kokemus.Sillä ei ole väliä, jos et tunne kaaviotietokantaa tai neo4j:tä, noudata vain tämän artikkelin ohjeita . Tämä artikkeli voi auttaa sinua ymmärtämään tietograafin soveltamismenetelmän RAG:ssa Kun sinulla on kokemusta, voit oppia käyttämään kaaviotietokantaa tarvittaessa.

0. Mikä on tietograafi?

0.1 Konsepti

Tietograafi on jäsennelty semanttinen tietokanta, joka tallentaa ja edustaa entiteettejä (kuten ihmisiä, paikkoja, organisaatioita jne.) ja entiteettien välisiä suhteita (kuten henkilösuhteita, maantieteellisiä sijaintisuhteita jne.) graafien muodossa. Tietokaavioita käytetään usein parantamaan hakukoneiden semanttista ymmärrystä tarjoamalla monipuolisempaa tietoa ja tarkempia hakutuloksia.

Tietograafin tärkeimmät ominaisuudet ovat:

1. Entiteetti : Tietograafin perusyksikkö, joka edustaa objektia tai käsitettä todellisessa maailmassa.

2. Suhde: entiteettien välinen suhde, kuten "kuuluu", "sijaitsee", "luoja" jne.

3. Attribuutti: Yhteisön hallussa olevat kuvaavat tiedot, kuten henkilön ikä, sijainnin pituus- ja leveysaste jne.

4. Graafinen rakenne: Tietograafi järjestää tiedot graafin muotoon, mukaan lukien solmut (entiteetit) ja reunat (relaatiot).

5. *Semanttinen verkko: Tietograafia voidaan pitää semanttisena verkkona, jossa solmuilla ja reunoilla on semanttinen merkitys.

6. Päätelmä: Tietograafia voidaan käyttää päättelyyn, eli uuden tiedon johtamiseen tunnettujen entiteettien ja suhteiden kautta.

Tietokaavioita käytetään laajasti hakukoneoptimoinnissa (SEO), suositusjärjestelmissä, luonnollisen kielen käsittelyssä (NLP), tiedon louhinnassa ja muilla aloilla. Esimerkiksi Googlen Knowledge Graph, Wikidata, DBpedia jne. ovat kaikki hyvin tunnettuja esimerkkejä tietokaavioista.

0.2 Tiedon merkitysgraafi

Tiedon organisointimuotona tietograafin merkitys on tarjota tehokas ja intuitiivinen tapa esittää ja hallita monimutkaisia ​​tietosuhteita. Se näyttää tiedot jäsennellyssä muodossa graafirakenteen solmujen ja reunojen kautta, parantaa datan semanttista ilmaisukykyä ja tekee entiteettien välisestä suhteesta selkeän ja selkeän. Tietokaaviot parantavat merkittävästi tiedonhaun tarkkuutta, erityisesti luonnollisen kielen käsittelyn alalla, jolloin koneet voivat paremmin ymmärtää monimutkaisia ​​käyttäjien kyselyitä ja vastata niihin. Tietokaavioilla on keskeinen rooli älykkäissä sovelluksissa, kuten suositusjärjestelmissä, älykkäissä kysymyksiin vastaamisessa jne.

Tylsän johdannon jälkeen katsotaanpa RAG+-tietograafin tapausta ja toteutetaan se itse.

Seuraava tapaus on LangChainin virallisesta dokumentaatiosta: https://python.langchain.com/v0.1/docs/integrations/graphs/neo4j_cypher/#refresh-graph-schema-information

1. Aloita koodaaminen

1.1 Valmistelu

(1) Ensin sinun on asennettava graafitietokanta, tässä käytämme neo4j:tä.

python-asennuskomento:

pip install neo4j
  • 1

(2) Rekisteröi virallinen tili, kirjaudu sisään ja luo tietokantaesiintymä. (Jos haluat käyttää sitä oppimiseen, valitse ilmainen.)

Kun olet luonut online-tietokannan ilmentymän, sivu on seuraava:

Voit nyt käyttää tätä tietokantaa koodissasi.

1.2 Koodikäytäntö

(1) Kun olet luonut tietokannan ilmentymän, sinun pitäisi saada linkki, käyttäjätunnus ja salasana. Vanha sääntö on laittaa se ympäristömuuttujaan ja ladata sitten ympäristömuuttuja Pythonin kautta:

neo4j_url = os.getenv('NEO4J_URI')  
neo4j_username = os.getenv('NEO4J_USERNAME')  
neo4j_password = os.getenv('NEO4J_PASSWORD')
  • 1
  • 2
  • 3

(2) Linkkitietokanta

LangChain kapseloi neo4j-rajapinnan, ja meidän tarvitsee vain tuoda Neo4jGraph-luokka käyttääksemme sitä.

from langchain_community.graphs import Neo4jGraph  
graph = Neo4jGraph(url=neo4j_url, username=neo4j_username, password=neo4j_password)
  • 1
  • 2

(3) Kysely ja täytä tiedot

Voit käyttää kyselyliittymää kyselyihin ja tulosten palauttamiseen. Kyselylauseen kieli on Cypher-kyselykieli.

result = graph.query(  
    """  
MERGE (m:Movie {name:"Top Gun", runtime: 120})  
WITH m  
UNWIND ["Tom Cruise", "Val Kilmer", "Anthony Edwards", "Meg Ryan"] AS actor  
MERGE (a:Actor {name:actor})  
MERGE (a)-[:ACTED_IN]->(m)  
"""  
)  
  
print(result)  
  
# 输出:[]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

Yllä olevan koodin tulos on []

(4) Päivitä kaavion arkkitehtoniset tiedot

graph.refresh_schema()  
print(graph.schema)
  • 1
  • 2

Tuloksista skeema sisältää tietoja, kuten solmutyypit, attribuutit ja tyyppien väliset suhteet, ja se on graafin arkkitehtuuri.

Voimme myös kirjautua sisään neo4j-verkkosivulle nähdäksesi graafitietokantaan tallennetut tiedot:

(5) Kun data on graafitietokannassa, voimme kysyä sitä seuraavaksi.

GraphCypherQAChain-luokka on kapseloitu LangChainiin, josta on helppo tehdä kyselyitä graafitietokannan avulla. Seuraava koodi:

chain = GraphCypherQAChain.from_llm(  
    ChatOpenAI(temperature=0), graph=graph, verbose=True  
)  
  
result = chain.invoke({"query": "Who played in Top Gun?"})  
print(result)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Toteutusprosessi ja tulokset:

Ensin luonnollinen kieli (Kuka soitti Top Gunissa?) muunnetaan graafin kyselylauseeksi suuren mallin avulla, sitten kyselylause suoritetaan neo4j:n kautta, tulokset palautetaan ja lopuksi se muunnetaan luonnolliseksi kieleksi suuren mallin kautta. mallia ja tulosta käyttäjälle.

2. Laajenna tietämystä

2.1 GraphCypherQAChainin parametrit

Yllä olevassa koodissa käytämme LangChainin GraphCypherQAChain-luokkaa, joka on LangChainin tarjoama graafitietokantakysely ja kysymys- ja vastausketju.Siinä on monia parametreja, jotka voidaan asettaa, kuten käyttöexclude_types Voit määrittää, mitkä solmutyypit tai -suhteet ohitetaan:

chain = GraphCypherQAChain.from_llm(  
    graph=graph,  
    cypher_llm=ChatOpenAI(temperature=0, model="gpt-3.5-turbo"),  
    qa_llm=ChatOpenAI(temperature=0, model="gpt-3.5-turbo-16k"),  
    verbose=True,  
    exclude_types=["Movie"],  
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Tulos on seuraavanlainen:

Node properties are the following:  
Actor {name: STRING}  
Relationship properties are the following:  
  
The relationships are the following:
  • 1
  • 2
  • 3
  • 4
  • 5

Saatavilla on monia samanlaisia ​​parametreja, voit katsoa virallista dokumentaatiota: https://python.langchain.com/v0.1/docs/integrations/graphs/neo4j_cypher/#use-separate-llms-for-cypher-and- vastaus-sukupolvi

2.2 GraphCypherQAChain-suorituksen lähdekoodi

Seuraavassa on GraphCypherQAChainin suorituslähdekoodi. Katsotaanpa lyhyesti sen suoritusprosessia.

(1)cypher_generation_chain: Luonnollisen kielen muuntaminen graafisiksi kyselylauseiksi.

(2)extract_cypher: Poista kyselylause. Tämä johtuu siitä, että suuret mallit voivat palauttaa lisäkuvaustietoja ja ne on poistettava.

(3)cypher_query_corrector: Korjaa kyselylause.

(4)graph.query: Suorita kyselykäskyt, tee kyselykuvaajatietokanta ja hanki sisältöä

(5)self.qa_chain: Alkuperäisen kysymyksen ja kyselyn sisällön perusteella isoa mallia käytetään jälleen järjestämään vastaukset ja tulosteet käyttäjälle luonnollisella kielellä.

def _call(    self,  
    inputs: Dict[str, Any],  
    run_manager: Optional[CallbackManagerForChainRun] = None,) -> Dict[str, Any]:  
    """Generate Cypher statement, use it to look up in db and answer question."""  
    ......  
  
    generated_cypher = self.cypher_generation_chain.run(  
        {"question": question, "schema": self.graph_schema}, callbacks=callbacks  
    )  
  
    # Extract Cypher code if it is wrapped in backticks  
    generated_cypher = extract_cypher(generated_cypher)  
  
    # Correct Cypher query if enabled  
    if self.cypher_query_corrector:  
        generated_cypher = self.cypher_query_corrector(generated_cypher)  
  
    ......  
  
    # Retrieve and limit the number of results  
    # Generated Cypher be null if query corrector identifies invalid schema  
    if generated_cypher:  
        context = self.graph.query(generated_cypher)[: self.top_k]  
    else:  
        context = []  
  
    if self.return_direct:  
        final_result = context  
    else:  
        ......  
  
        result = self.qa_chain(  
            {"question": question, "context": context},  
            callbacks=callbacks,  
        )  
        final_result = result[self.qa_chain.output_key]  
  
    chain_result: Dict[str, Any] = {self.output_key: final_result}  
    ......  
  
    return chain_result
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

Kuinka oppia suuria tekoälymalleja?

Innostuneena Internet-veteraanina päätin jakaa arvokkaan tekoälytietoni kaikkien kanssa. Mitä tulee siihen, kuinka paljon voit oppia, se riippuu oppimisen sinnikkyydestäsi ja kyvystäsi. Olen jakanut tärkeitä tekoälyn suuria mallimateriaaleja, kuten tekoälyn suuren mallin esittelyoppimisen ajatuskarttoja, korkealaatuisia tekoälyn suurten mallien oppimiskirjoja ja -oppaita, opetusvideoita, käytännön oppimista ja muita tallennettuja videoita ilmaiseksi.

Tämä laajan mallin tekoälyn oppimateriaalien täydellinen versio on ladattu CSDN:ään, jos tarvitset sitä, ystäväsi voivat skannata alla olevan virallisen CSDN-sertifioinnin QR-koodin WeChatissa saadakseen sen ilmaiseksi [.保证100%免费

1. Täydellinen sarja AGI-suurten mallien oppimisreittejä

Oppimismatka suurten tekoälymallien aikakaudella: perusasioista huippuluokkaan, hallitse tekoälyn ydintaidot!

img

2. Kokoelma 640 sarjaa suurten tekoälymallien raportteja

Tämä 640 raportin kokoelma kattaa monia näkökohtia, kuten teoreettisen tutkimuksen, teknisen toteutuksen ja suurten tekoälymallien teollisuuden soveltamisen. Olitpa tieteellinen tutkija, insinööri tai suurista tekoälymalleista kiinnostunut innokas, tämä raporttikokoelma tarjoaa sinulle arvokasta tietoa ja inspiraatiota.

img

3. Klassiset PDF-kirjat suurista tekoälymalleista

Tekoälyteknologian nopean kehityksen myötä suurista tekoälymalleista on tullut kuuma aihe nykypäivän tieteen ja teknologian alalla. Nämä suuren mittakaavan esikoulutetut mallit, kuten GPT-3, BERT, XLNet jne., muuttavat käsitystämme tekoälystä voimakkailla kielen ymmärtämisellä ja generointiominaisuuksilla. Seuraavat PDF-kirjat ovat erittäin hyviä oppimisresursseja.

img

4. Tekoälyn suuren mallin kaupallistamissuunnitelma

img

Tavallisena ihmisenä suurten mallien aikakauteen astuminen vaatii jatkuvaa oppimista ja harjoittelua oman taitojen ja kognitiivisen tason jatkuvaksi parantamiseksi. Samalla tarvitaan vastuuntuntoa ja eettistä tietoisuutta edistääkseen tekoälyn tervettä kehitystä. .