paint-brush
په 6M ويکيپېډيا پاڼو کې د RAG لپاره د پوهې ګراف جوړول $70K څنګه خوندي کوللخوا@datastax
نوی تاریخ

په 6M ويکيپېډيا پاڼو کې د RAG لپاره د پوهې ګراف جوړول $70K څنګه خوندي کول

لخوا DataStax4m2024/10/15
Read on Terminal Reader

ډېر اوږد؛ لوستل

موږ استدلال کړی چې د مینځپانګې متمرکز پوهه ګرافونه - د ویکتور پلورنځی د ټوټو ترمینځ لینکونو ته اجازه ورکوي - د کارولو لپاره اسانه او د RAG پایلو ښه کولو لپاره خورا مؤثره تګلاره ده. دلته، موږ دا ازموینې ته واچوو.
featured image - په 6M ويکيپېډيا پاڼو کې د RAG لپاره د پوهې ګراف جوړول $70K څنګه خوندي کول
DataStax HackerNoon profile picture
0-item



د لاسته راوړنې - لوړ شوي نسل (RAG) غوښتنلیکونو پایلو ته وده ورکولو لپاره د پوهې ګرافونو کارول یوه ګرمه موضوع ګرځیدلې. ډیری مثالونه ښیې چې څنګه د نسبتا لږ شمیر اسنادو په کارولو سره د پوهې ګراف رامینځته کړئ. دا کیدی شي ځکه چې عادي طریقه - د ښه دانه، د ادارې متمرکز معلوماتو استخراج - یوازې اندازه نه کوي. د هر سند چلول د موډل له لارې د ادارو (نوډونو) او اړیکو (کنارونو) استخراج لپاره خورا اوږد وخت نیسي (او ډیر لګښت لري) په لوی ډیټاسیټونو چلولو لپاره.


موږ دا استدلال کړی دی د محتوا متمرکز پوهه ګرافونه - د ویکتور پلورنځی د ټوټو ترمینځ لینکونو ته اجازه ورکوي - د کارولو لپاره اسانه او خورا مؤثره طریقه ده. دلته، موږ دا ازموینې ته واچوو. موږ د ويکيپېډيا د مقالو يوه فرعي ټولګه له دې څخه پورته کوو 2wikimultihop ډیټاسیټ دواړه تخنیکونه کاروي او بحث وکړئ چې دا د ټول ډیټاسیټ بارولو لپاره څه معنی لري. موږ د بار شوي ډیټا په اړه د ځینې پوښتنو پایلې څرګندوو. موږ به ټول ډیټاسیټ - نږدې 6 ملیون سندونه - د مینځپانګې متمرکز ته پورته کړو GraphVectorStore .

د وجود متمرکز: LLMGraphTransformer

د ادارې متمرکز ګراف پلورنځي ته د اسنادو بار کول لکه Neo4j د LangChain د LLMGraphTransformer په کارولو سره ترسره شوي. کوډ د LangChain's پر بنسټ والړ دی "څنګه د پوهې ګرافونه جوړ کړئ."

 from langchain_core.documents import Document from langchain_experimental.graph_transformers import LLMGraphTransformer from langchain_openai import ChatOpenAI llm = ChatOpenAI(temperature=0, model_name="gpt-4-turbo") llm_transformer = LLMGraphTransformer(llm=llm) from time import perf_counter start = perf_counter() documents_to_load = [Document(page_content=line) for line in lines_to_load] graph_documents = llm_transformer.convert_to_graph_documents(documents_to_load) end = perf_counter() print(f"Loaded (but NOT written) {NUM_LINES_TO_LOAD} in {end - start:0.2f}s")

د منځپانګې متمرکز: GraphVectorStore

په GraphVectorStore کې د ډیټا بارول تقریبا د ویکتور پلورنځي کې د بارولو په څیر دی. یوازینۍ اضافه دا ده چې موږ میټاډاټا محاسبه کوو چې دا په ګوته کوي چې هر پاڼه د نورو پاڼو سره څنګه اړیکه لري.


 import json from langchain_core.graph_vectorstores.links import METADATA_LINKS_KEY, Link def parse_document(line: str) -> Document:    para = json.loads(line)    id = para["id"]    links = {        Link.outgoing(kind="href", tag=id)        for m in para["mentions"]        if m["ref_ids"] is not None        for id in m["ref_ids"]    }    links.add(Link.incoming(kind="href", tag=id))    return Document(        id = id,        page_content = " ".join(para["sentences"]),        metadata = {            "content_id": para["id"],            METADATA_LINKS_KEY: list(links)        },    )


دا هم یو ښه مثال دی چې تاسو څنګه کولی شئ د نوډونو ترمنځ خپل لینکونه اضافه کړئ.


 from langchain_openai import OpenAIEmbeddings from langchain_community.graph_vectorstores.cassandra import CassandraGraphVectorStore import cassio cassio.init(auto=True) TABLE_NAME = "wiki_load" store = CassandraGraphVectorStore( embedding = OpenAIEmbeddings(), node_table=TABLE_NAME, insert_timeout = 1000.0, ) from time import perf_counter start = perf_counter() from datasets.wikimultihop.load import parse_document kg_documents = [parse_document(line) for line in lines_to_load] store.add_documents(kg_documents) end = perf_counter() print(f"Loaded (and written) {NUM_LINES_TO_LOAD} in {end - start:0.2f}s")

د بنچمارکونو بارول

په 100 قطارونو کې چلول، د GPT-4o په کارولو سره د ادارې متمرکز چلند 405.93s د ګراف اسنادو استخراج لپاره او 10.99s یې په Neo4j کې لیکلو لپاره اخیستي، پداسې حال کې چې د مینځپانګې متمرکز چلند 1.43s اخیستي. Extrapolating، دا به 41 اونۍ وخت ونیسي چې ټولې 5,989,847 پاڼې د ادارې متمرکز چلند په کارولو سره او شاوخوا 24 ساعته د مینځپانګې متمرکز چلند په کارولو سره. مګر د موازي کولو څخه مننه ، د مینځپانګې متمرکز چلند یوازې په 2.5 ساعتونو کې پرمخ ځي! د ورته موازي ګټو په نظر کې نیولو سره، دا به لاهم څلور اونۍ وخت ونیسي ترڅو د ادارې متمرکز چلند په کارولو سره هرڅه بار کړي. ما دا هڅه نه ده کړې ځکه چې اټکل شوی لګښت به $ 58,700 وي - داسې انګیرل چې هرڅه لومړی ځل کار کوي!



لاندینۍ کرښه: د LLM په کارولو سره د مینځپانګې څخه د پوهې ګرافونو استخراج لپاره د ادارې متمرکز چلند وخت او لګښت دواړه په پیمانه منع دي. له بلې خوا، د GraphVectorStore کارول ګړندي او ارزانه و.

د بېلګې ځوابونه

پدې برخه کې، یو څو پوښتنې چې د بار شوي اسنادو له فرعي سیټ څخه راخیستل شوي، د ځوابونو کیفیت په ګوته کولو لپاره پوښتل شوي.


د وجود متمرکز 7324 پرامپټ ټوکنونه کارولي او په بنسټیز ډول بې ګټې ځوابونو تولید لپاره $0.03 لګښت لري، پداسې حال کې چې د منځپانګې مرکز 450 پرامپټ ټوکنونه کارولي او $0.002 لګښت لري ترڅو لنډ ځوابونه مستقیم ځوابونه تولید کړي.


دا ممکن د حیرانتیا خبره وي چې ښه دانه شوي Neo4j ګراف بې ګټې ځوابونه بیرته راوړي. د زنځیر څخه د ننوتلو په لټه کې، موږ یو څه ګورو چې ولې دا پیښیږي:


 > Entering new GraphCypherQAChain chain... Generated Cypher: cypher MATCH (a:Album {id: 'The Circle'})-[:RELEASED_BY]->(r:Record_label) RETURN a.id, r.id Full Context: [{'a.id': 'The Circle', 'r.id': 'Restless'}] > Finished chain. {'query': "When was 'The Circle' released?", 'result': "I don't know the answer."}


نو، ښه دانه شوي سکیما یوازې د ریکارډ لیبل په اړه معلومات بیرته راستانه شوي. دا معنی لري چې LLM نشي کولی د ترلاسه شوي معلوماتو پراساس پوښتنې ته ځواب ووایی.

پایله

د ښه دانه ، د ادارې ځانګړي پوهې ګرافونو استخراج د وخت او لګښت په اندازه منع دی. کله چې د بار شوي ډیټا د فرعي سیټ په اړه پوښتنې وپوښتل شوې، اضافي ګرانولیت (او د ښه دانه شوي ګراف پورته کولو اضافي لګښت) د سمدستي شاملولو لپاره نور ټکي بیرته راستانه کړل مګر بې ګټې ځوابونه یې رامینځته کړل!


GraphVectorStore د محتوياتو متمرکز طرزالعمل غوره کوي چې د پوهې ګراف جوړول ګړندي او اسانه کوي. تاسو کولی شئ د LangChain په کارولو سره د VectorStore آبادولو لپاره د خپل موجوده کوډ سره پیل کړئ او د بیا ترلاسه کولو پروسې ښه کولو لپاره د ټوټو ترمینځ لینکونه (کنارونه) اضافه کړئ.


ګراف RAG یو ګټور وسیله ده چې د تولیدي AI RAG غوښتنلیکونو وړولو لپاره خورا ژور اړوند شرایط ترلاسه کولو لپاره. مګر د ښه دانه ، د ادارې متمرکز چلند کارول د تولید اړتیاو ته اندازه نه کوي. که تاسو په خپل RAG غوښتنلیک کې د پوهې ګراف وړتیاوې اضافه کولو په لټه کې یاست، هڅه وکړئ GraphVectorStore .


د بین چیمبرز ، ډیټا سټیکس لخوا