Hatua ya 1: Fuatilia na usindikaji maudhui kutoka kwa URL nyingi. Tunaondoa maandishi kutoka kwenye orodha iliyotolewa ya URL za Reddit na kuhifadhiwa katika all_texts. Hatua ya 3: Tunaanzisha uingizaji wa Ollama. Uingizaji ni maonyesho ya nambari (vector) ya maandishi ya dhahabu yanayochukua maana ya semantic ya maandishi. Uingizaji unawezesha mifano mbalimbali ya ML kusindika na kuelewa maandishi kwa ufanisi. OllamaEmbeddings darasa huchukua mfano wa llama2 ili kuzalisha uingizaji huu. Hatua ya 4: Facebook AI Similarity Search (FAISS) ni maktaba ya kutafuta kwa ufanisi na kukusanya vektor ya ukubwa wa juu. Kazi ya from_texts inabadilisha vipande vya maandishi katika vektor (kutoka hatua ya 3) na kuhifadhi katika duka la vektor ya FAISS. FAISS husaidia kupata vipande vinavyofanana na query yako kwa kulinganisha umbali wa vektor (cosine, euclidean) kwa njia iliyo bora zaidi. Hatua ya 5: Tunaanzisha LLM ya Ollama, ambayo itaunda majibu au maswali ya mchakato kulingana na ujuzi uliohifadhiwa katika uingizaji katika hifadhi ya vektor ya FAISS kutoka hatua ya 4.Hatua ya 5: Tunaanzisha LLM ya Ollama, ambayo itaunda majibu au maswali ya usindikaji kulingana na ujuzi uliohifadhiwa katika uingizaji katika duka la vektor ya FAISS kutoka hatua ya 4. Hatua ya 6: Hapa, tunafafanua kazi ya ask_question_with_fallback kutafuta maarifa yaliyohifadhiwa ili kujibu swali la mtumiaji. Lakini ikiwa haiwezi kupata docs sawa au kiwango cha kufanana ni cha chini, itaanguka nyuma kwa maarifa ya jumla ya LLM ya msingi (Ollama hapa).Hatua ya 6: Hapa, tunafafanua kazi ya ask_question_with_fallback ili kutafuta ujuzi uliopohifadhiwa ili kujibu swali la mtumiaji. Lakini ikiwa haiwezi kupata docs sawa au kiwango cha kufanana ni cha chini, itaanguka tena kwenye ujuzi wa jumla wa LLM ya msingi (Ollama hapa). Models kubwa lugha ni nguvu sana na ni ya kushangaza kwamba wamekuwa mafunzo juu ya data kubwa corpora. Hata hivyo, wengi wetu, kama sisi kuanza safari yetu wa mwanzilishi, kuwa na bajeti ya mafunzo ya mifano hii ndani ya nyumba? Lakini kusubiri, hizi LLMs zilizoandaliwa kabla ya mafunzo ni muhimu kwetu? Bila shaka, ikiwa ni chanzo cha wazi. Kwa bahati nzuri, wachache ni inapatikana sasa. Kwa hiyo, ni kwa kiasi gani ni muhimu? Wengi wetu katika uwanja wa AI tunajua RAGs au angalau wamesikia kuhusu yao. Niruhusu mimi kutoa ufafanuzi rahisi wa mstari mmoja. uzalishaji wa upatikanaji ni hasa jinsi inavyoonekana - inachukua data kutoka kwa vyanzo vya nje tunayotupa na kuongezeka kwa matokeo ya LLM. Ni muhimu sana kwa sababu inatumia nguvu ya uzalishaji wa LLM wakati wa kuingiza maarifa tunayotoa nje ya kuzalisha outputs kutoka kwa corpus inayotaka. Mimi ni hasa nia ya jinsi sisi kula na kuamini sana katika dhana ya "mbuzi katika, mbuzi nje" linapokuja suala la chakula na miili. Ikiwa tunahifadhi mwenyewe na vyakula vya afya ya asili, sisi kutafakari asili - nguvu, yenye nguvu, na isiyoweza kuzuiliwa. Lakini kama tunakula nyama ya asili, sisi kuanza kuangalia na kujisikia sawa - kutoweka na isiyo ya asili. Moja ya matokeo mbaya zaidi ya matumizi ya juu ya nyama ya asili na nyama ya asili leo ni sukari. Na nani anajua kwa kweli maumivu ya kweli ya kuishi na ugonjwa wa kisukari? Ni rahisi - watu wanaopitia kwa mkono wa kwanza. Kutokana na maslahi yangu katika kupata data ya uzoefu juu ya ugonjwa wa kisukari kwa kutumia LLMs, nilifanya majaribio haya na Ollama - mojawapo ya LLMs nyingi za chanzo wazi ambazo zinaweza kutumika kwa kazi hizo. Mimi ni kushiriki notebook yangu hatua kwa hatua na ufafanuzi katika kila hatua. Zaidi ya hayo, ili kusaidia uelewa, mimi ni pamoja na kiwango cha juu kielelezo chati chati. Hali ya 1: Fuatilia na usindikaji maudhui kutoka kwa URL nyingi. Tunaondoa maandishi kutoka kwenye orodha iliyotolewa ya URL za Reddit na kuhifadhiwa katika all_texts. text # Import muhimu vitabu kuagiza kutoka bs4 kuagiza Beautiful_Soup kutoka langchain.text_splitter kuagiza RecursiveCharacterTextSplitter kutoka langchain.embeddings kuagiza OllamaEmbeddings kutoka langchain.vectorstores kuagiza FAISS kutoka langchain.vectorstores kuagiza FAISS kutoka langchain_a_ex_a_ex_a_ex_a_ex_a_ex_a_ex_a_ex_a_ex_a_ex_a_ex_a_ex_a_ex_a_ex_a_ex_a_ex_a_ex_a_ex_a_ex_a_ex_a_ex_a_ex_a_ex # Hatua ya 2: Weka maudhui yote katika sehemu za text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) all_chunks = [] kwa maandishi katika all_texts: all_chunks.extend(text_splitter.split_text(text)) # Hatua ya 2: Weka maudhui yote katika sehemu za text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) all_chunks = [] kwa maandishi katika all_texts: all_chunks.extend(text_splitter.split_text(text)) Hatua 3: Tunaanzisha uingizaji wa Ollama. Uingizaji ni maonyesho ya namba (vector) ya maandishi ya nyekundu yanayopiga maana ya semantic ya maandishi. Uingizaji unawezesha mifano mingine ya ML kusindika na kuelewa maandishi kwa ufanisi. OllamaEmbeddings darasa huchukua mfano wa llama2 ili kuzalisha uingizaji huu. # Hatua ya 3: Fanya ufungaji wa ufungaji wa Ollama = OllamaEmbeddings(model="llama2") # Fanya jina la mfano ikiwa inahitajika # Hatua ya 3: Kuanzisha ufungaji wa ufungaji wa Ollama = OllamaEmbeddings(model="llama2") # Ongeza jina la mfano ikiwa inahitajika Hali ya 4: Facebook AI Utafutaji wa Ufanisi (FAISS) ni maktaba ya kutafuta kwa ufanisi na kukusanya vektor ya ukubwa wa juu. Kazi ya from_texts inabadilisha vipande vya maandishi katika vektor (kutoka hatua ya 3) na kuhifadhi katika duka la vektor ya FAISS. FAISS inakusaidia kupata vipande vinavyofanana na query yako kwa kulinganisha umbali wa vektor (cosine, euclidean) kwa njia iliyo bora zaidi. # Hatua ya 4: Kuunda uhifadhi wa vektor FAISS kwa kutumia vikundi vektor_store = FAISS.from_texts(all_chunks, embeddings) # Hatua ya 4: Kuunda hifadhi ya vektor ya FAISS kwa kutumia vikundi vektor_store = FAISS.from_texts(all_chunks, embeddings) # Hatua ya 5: Kuanza Ollama LLM llm = Ollama(model="llama2", joto=0.3) # Hatua ya 5: Kuanza Ollama LLM llm = Ollama(model="llama2", joto=0.3) Kwa pamoja, hatua 3-5 zinawezesha RAG, ambapo LLM inaweza kuchukua ujuzi kutoka kwa vipande vilivyohifadhiwa katika uhifadhi wa vektor na kutumia mazingira yaliyochukuliwa ili kujibu swali la mtumiaji kwa njia inayofaa zaidi. rag rag # Hatua 6: Tengeneza kazi ya majibu ya swali def ask_question_with_fallback(query): # Tengeneza nyaraka zinazohusiana docs = vector_store.similarity_search(query, k=3) docs = vector_metadata.get('score', 1.0) < 0.3 kwa doc: print(f"Retrieved doc_knowledge(query) if not docs: return {doc.page_knowledge[:200]} # Kama hakuna nyaraka zinazohusiana au umuhimu mdogo, kutumia ujuzi wa jumla #if not docs au all(doc.metadata.get('score', 1.0) < 0.3 kwa docs: # kurejesha matumizi_mawazo ya kawaida_ # Hatua 6: Tengeneza kazi ya majibu ya swali def ask_question_with_fallback(query): # Tengeneza nyaraka zinazohusiana docs = vector_store.similarity_search(query, k=3) docs = vector_store.get.similarity_search(query, k=3) kwa doc katika docs: print(f"Retrieved doc_knowledge(query) if not docs: return: return use_doc.page_knowledge[:200]} # Ikiwa hakuna nyaraka zinazohusiana au umuhimu wa chini, kutumia ujuzi wa jumla #if not docs au all(doc.metadata.get.get'score 1.0',) < 0.3 kwa doc_const___don_ Hatua ya 8: Hatua hii inaonyesha mfano wa jinsi ya kutumia mbinu hii ya RAG. Unatoa swali kwa mfano, na LLM hutumia maarifa ya nje au ya ndani ili kujibu swali lako.Hatua ya 8: Hatua hii inaonyesha mfano wa jinsi ya kutumia mbinu hii ya RAG. Unatoa swali kwa mfano, na LLM hutumia maarifa ya nje au ya ndani ili kujibu swali lako. Hatua 7: Hii ni kazi ya kupiga kura. Ikiwa hakuna nyaraka zinazohusiana zinaweza kupatikana katika hatua ya 6, LLM inatumia ujuzi wake wa jumla kujibu swali la mtumiaji. Hatua 7: Hii ni kazi ya kupiga marufuku. Ikiwa hakuna nyaraka zinazohusiana zinaweza kupatikana katika hatua ya 6, LLM inatumia ujuzi wake wa jumla kujibu swali la mtumiaji. # Hatua ya 7: Kufafanua kazi ya maarifa ya jumla ya faili def use_general_knowledge(query): general_prompt = f""Jibu swali hili kwa kutumia maarifa yako ya jumla: {query} Kutoa majibu ya moja kwa moja na yenye manufaa. Ikiwa hujui, tu sema hivyo. """ general_answer = llm(general_prompt) kurudi { "answer": general_answer, "source": "maarifa ya jumla", "source_documents": [] } # Hatua ya 7: Kufafanua kazi ya ujuzi wa jumla wa upungufu def use_general_knowledge(query): general_prompt = f""Jibu swali hili kwa kutumia ujuzi wako wa jumla: {query} Kutoa majibu ya moja kwa moja na yenye manufaa. Ikiwa hujui, tu kusema hivyo. """ general_answer = llm(general_prompt) kurudi { "answer": general_answer, "source": "maarifa ya jumla", "source_documents": [] } #Mchakato 8 # Mfano usage query = "Ni nini sehemu ngumu zaidi juu ya usimamizi wa ugonjwa wa kisukari?" # Kubadilisha na matokeo ya swali lako halisi = ask_question_with_fallback(query) # Matoleo ya matokeo print("Answer:") print(f"Result["answer"]) print(f"\nSource: {result['source']}") kama matokeo["source_documents"]: print("\nSource Documents:") kwa i, doc in enumerate(result["source_documents"]): print(f"Source {i+1}:") print(doc.page_content:[200] + "... # Print kwanza 200 chars ya kila print() kwa hrs #Mchakato 8 # Mfano usage query = "Ni nini sehemu ngumu zaidi juu ya kusimamia ugonjwa wa kisukari?" # Kubadilisha na matokeo ya swali lako halisi = ask_question_with_fallback(query) # Matoleo ya matokeo print("Answer:") print(result["answer"]) print(f"\nSource: {result['source']}") if result["source_documents"]: print("\nSource Documents:") kwa i, doc in enumerate(result["source_documents"]): print(f"Source {i+1}:") print(doc.page_content:[200] +") # Print 200 chars ya kwanza ya kila print source() Mchakato wangu kutoka hatua ya 8 ni hapa chini. Mfano unatumia RAG, ambayo inatambua hati sawa kutoka kwa duka la FAISS na kujibu swali langu. Mchakato wangu kutoka Hatua ya 8 ni hapa chini. Mfano unatumia RAG, ambayo inatambua hati sawa kutoka kwa duka la FAISS na kujibu swali langu. Kwa mwisho, kutumia RAG na URLs ni mbinu yenye nguvu ya kupata ujuzi bora katika maswali yanayohusiana na ugonjwa wa kisukari. Kwa kuchanganya ufahamu wa ulimwengu halisi kutoka kwa majukwaa ya jamii kama Reddit juu ya LLMs za chanzo wazi, tunaweza kutoa habari ya kibinafsi na sahihi - baada ya yote, nani anajua bora kuliko wale wanaoishi na hiyo kila siku? Mchakato huu sio tu wa gharama nafuu lakini pia unasaidia ushirikiano, hatimaye kuboresha msaada kwa watu wanaoshughulikia ugonjwa wa kisukari.Kama AI inaendelea kuendeleza, uwezo wake wa kuboresha huduma za afya na ustawi bado ni mkubwa. Picha ya kipengele cha Suzy Hazelwood: https://www.pexels.com/photo/close-up-photo-of-sugar-cubes-in-glass-jar-2523650/ Picha ya kipekee ya Suzy Hazelwood: https://www.pexels.com/photo/close-up-photo-of-sugar-cubes-in-glass-jar-2523650/