489 okumalar
489 okumalar

Reddit URL'leri ile RAG'ı kullanmak Diyabet: Geliştirilmiş Bilgi Alımı için Açık Kaynaklı LLM'ler

ile Shilpi Bhattacharyya7m2025/03/27
Read on Terminal Reader

Çok uzun; Okumak

Diyabet üzerine deneysel verileri LLM'ler aracılığıyla elde etme konusundaki ilgim nedeniyle, bu deneyi Ollama ile gerçekleştirdim. Ollama, bu tür görevler için kullanılabilecek çok sayıda açık kaynaklı LLM'den biridir.
featured image - Reddit URL'leri ile RAG'ı kullanmak Diyabet: Geliştirilmiş Bilgi Alımı için Açık Kaynaklı LLM'ler
Shilpi Bhattacharyya HackerNoon profile picture

Büyük Dil Modelleri inanılmaz derecede güçlüdür ve büyük bir veri topluluğunda eğitilmiş oldukları şaşırtıcıdır. Ancak, kurucularımızın yolculuğuna başladığımızda bu modellerin evde eğitilmesi için bütçemiz var mı?


Ama bekleyin, bu önceden eğitilmiş LLM'ler bize yararlı mı? tabii ki, açık kaynaklı ise. neyse ki, şimdi oldukça az sayıda mevcuttur.


Öyleyse, tam olarak ne kadar yararlılar? AI alanında çoğumuz RAG'ları biliyoruz ya da en azından bunları duymuşuzdur.Lütfen basit bir tek satırlı tanım sunalım.Retrieval-augmented generation tam olarak neye benziyor - sağladığımız dış kaynaklardan veri alır ve LLM çıkışına artırır.


Eğer sınırlı bir dış korpusunuz varsa, modelin LLM'nin genel bilgisine geri düşmesine izin verebiliriz.


Ben özellikle nasıl yediğimizle ilgileniyorum ve gıda ve vücut söz konusu olduğunda “çöp içine, çöp dışına” kavramına derinden inanıyorum. eğer kendimizi doğal olarak sağlıklı yiyeceklerle besliyorsak, doğayı yansıtıyoruz - güçlü, canlı ve durdurulamaz. Ama eğer yapay, canlı olmayan yiyecekleri tüketirseniz, aynı görünmeye ve hissetmeye başlarız - boşaltılmış ve doğal olmayan. Günümüzde aşırı yapay ve rafine gıda tüketiminin en kötü sonuçlarından biri diyabettir.


Ve kim gerçekten diyabetle yaşamanın gerçek acı noktalarını anlar? Basittir - ilk elden deneyimleyen insanlar. LLM'leri kullanarak diyabetle ilgili deneyimsel verileri elde etme ilgimi çekince, bu deneyi Ollama ile yaptım - bu tür görevler için kullanılabilecek birçok açık kaynaklı LLM'den biri.


Her aşamada bir açıklama ile adım adım not defterimi paylaşıyorum. ek olarak, anlayışa yardımcı olmak için, yüksek düzeyde bir mimari diyagramı içeriyorum.

RAG System Architecture Diagram

RAG System Architecture Diagram


Adım 1: Birden fazla URL'den içerik toplama ve işleme. Reddit URL'lerinin sağlanan listesinden metni siliyoruz ve onu all_texts'e saklıyoruz.

Adım 1: Birden fazla URL'den içerik toplama ve işleme. Reddit URL'lerinin listesinden metni siliyoruz ve onu all_texts'te depoluyoruz.bu ilanı beğen Ağu 20 (London) resim har. bu ilanı gizle geri yükle bu ilanı geri yükle bu ilanı geri yükle bu ilanı geri yükle bu ilanı geri yükle bu ilanı geri yükle bu ilanı geri yükle bu ilanı geri yükle# Adım 2: Tüm içeriği parçalara ayırın text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) all_chunks = [] all_chunks.extend(text_splitter.split_text(text)) # Adım 2: Tüm içeriği parçalara ayırın text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) all_chunks = [] all_chunks.extend(text_splitter.split_text(text))

Adım 3: Ollama embeddingsini başlatıyoruz. Embeddings, metnin semantik anlamını yakalayan ham metnin sayısal (vector) temsilidir. Embeddings, çeşitli ML modellerini işleme ve metni etkili bir şekilde anlamasına olanak sağlar. OllamaEmbeddings sınıfı bu embeddingsleri oluşturmak için llama2 modelini kullanır.

Adım 3: Ollama embeddingsini başlatıyoruz. Embeddings, metnin semantik anlamını yakalayan ham metnin sayısal (vektor) temsilidir. Embeddings çeşitli ML modellerini işleme ve metni etkili bir şekilde anlamanıza olanak tanır. OllamaEmbeddings sınıfı bu embeddingsleri oluşturmak için llama2 modelini kullanır.
# Adım 3: Ollama embeddings embeddings initialize = OllamaEmbeddings(model="llama2") # Model adı gerekirse ayarlayın 
# Adım 3: Ollama embeddings embeddings = OllamaEmbeddings(model="llama2") # Model adı gerekirse ayarlayın

Adım 4: Facebook AI Benzerlik Arama (FAISS) yüksek boyutlu vektörlerin verimli benzerlik arama ve gruplandırma için bir kütüphanedir. from_texts işlevi metin parçalarını vektörlere dönüştürür (Adım 3) ve bunları FAISS vektör depolarında depolamaktadır. FAISS, sorunuza benzer parçaları, vektör mesafelerini (cosine, euclidean) yüksek derecede optimize ederek karşılaştırarak bulmanıza yardımcı olur.

Adım 4: Facebook AI Benzerlik Arama (FAISS) yüksek boyutlu vektörlerin etkili bir benzerlik arama ve gruplandırma için bir kütüphanedir. from_texts işlevi metin parçalarını vektörlere dönüştürür (Adım 3'ten itibaren) ve bunları FAISS vektör mağazasına depolamaktadır. FAISS, vektör mesafelerini (kosine, euclid) yüksek derecede optimize ederek sorunuza benzer parçaları bulmanıza yardımcı olur.
# Adım 4: Tüm parçaları vektor_store = FAISS.from_texts(all_chunks, embeddings) 
kullanarak FAISS vektor depoları oluşturun# Adım 4: Tüm parçaları vektor_store = FAISS.from_texts(all_chunks, embeddings) kullanarak FAISS vektor depoları oluşturun

Adım 5: Adım 4'ten itibaren FAISS vektör depolarında yer alan yerleştirmelerde saklanan bilgiye dayanan yanıtlar veya işlem sorularını oluşturan Ollama LLM'yi başlatırız.

Adım 5: FAISS vektör depolarında depolanan bilgiye dayanarak, adım 4'ten itibaren yanıtlar veya işlem sorularını oluşturan Ollama LLM'yi başlatıyoruz.
 # Adım 5: Ollama LLM llm = Ollama(model="llama2", sıcaklık=0.3) 
# Adım 5: Ollama LLM llm = Ollama (model="llama2", sıcaklık=0.3) başlatın

Birlikte, adımlar 3-5 RAG'ı etkinleştirir, LLM'nin vektor depolama alanında depolanan parçalardan bilgi çekebilmesi ve bir kullanıcının sorgusuna en uygun şekilde cevap vermek için alınan bağlamı kullanması sağlanır.


Adım 6: Burada, bir kullanıcının sorgusuna cevap vermek için depolanan bilgiyi sorgulamak için ask_question_with_fallback işlevini tanımlıyoruz. ancak benzer dokümanları bulamıyorsa veya benzerlik puanı düşükse, temel LLM'nin genel bilgisine geri dönecektir (Ollama burada).

Adım 6: Burada, bir kullanıcının sorgusuna cevap vermek için depolanan bilgiyi sorgulamak için ask_question_with_fallback işlevini tanımlıyoruz. ancak benzer dokümanları bulamıyorsa veya benzerlik puanı düşükse, temel LLM'nin genel bilgisine geri dönecektir (Ollama burada).
 rag rag># Adım 6: dosyada soru yanıtlama işlevi def ask_question_with_fallback(query) oluşturun: # ilgili belgeleri docs = vector_store.similarity_search(query, k=3) docs = vector_get('score', 1.0) < docs için doc: print(f"Retrieved doc_knowledge(query) if not docs: return docs: return docs: return docs: use_general_knowledge: {doc.page_content[:200]} if not docs or all (doc.metadata.get('score', 1.0) < 0.3 for doc in docs): # return use_fall_general_knowledge(query) if not docs:# Adım 6: dosyada soru yanıtlama işlevi def ask_question_with_fallback(query): # ilgili belgeleri docs = vector_store.similarity_search(query, k=3) docs = vector_store.get.similarity_search(query, k=3) oluşturun: docs içindeki doc için print(f"Retrieved doc_knowledge(query) içeriği: {doc.page_knowledge[:200]} içeriği: {doc.page_content(query) içeriği: {doc.page_knowledge(query) içeriği: {doc.page_knowledge(:200)) içeriği: {doc.page_knowledge(:200) içeriği: {doc

Adım 7: Bu, geri dönüş işlevidir. eğer ilgili belgeler adım 6'da bulunamadıysa, LLM, kullanıcının sorgusuna cevap vermek için genel bilgilerini kullanır.

Adım 7: Bu, geri dönüş fonksiyonudur. eğer 6. adımda ilgili belgeler bulunamadıysa, LLM, kullanıcı sorusuna yanıt vermek için genel bilgilerini kullanır.
# Adım 7: Define fallback general knowledge function def use_general_knowledge(query): general_prompt = f"" Bu soruyu genel bilginizle yanıtlayın: {query} Doğrudan ve yararlı bir yanıt verin. Eğer bilmiyorsanız, bunu söyleyin. """ general_answer = llm(general_prompt) return { "answer": general_answer, "source": "General knowledge", "source_documents": [] } 
# Adım 7: General knowledge function def def use_general_knowledge(query): general_prompt = f"" Bu soruyu genel bilginizle yanıtlayın: {query} Doğrudan ve yararlı bir yanıt verin. Eğer bilmiyorsanız, bunu söyleyin. """ general_answer = llm(general_prompt) geri { "answer": general_answer, "source": "General knowledge", "source_documents": [] }

Adım 8: Bu adım bu RAG mekanizmasını nasıl kullanacağınızın bir örneğini gösterir.Modele bir sorgu sağlarsınız ve LLM sorunuza yanıt vermek için dış veya iç bilgi kullanır.

Adım 8: Bu adım bu RAG mekanizmasını nasıl kullanacağınızın bir örneğini gösterir.Modele bir sorgu sağlarsınız ve LLM sorunuza yanıt vermek için dış veya iç bilgi kullanır.
#Adım 8 # Örnek kullanımı sorgusu = "Diabetes tedavisi hakkında en zor kısmı nedir?" # Gerçek soru sonucu = ask_question_with_fallback(query) # Görüntüleme sonuçları print("Answer:") print(f"Result["answer"]) print(f"\nSource: {result['source']}") if result["source_documents"]: print("\nSource Documents:") for i, doc in enumerate(result["source_documents"]): print(f"Source {i+1}:") print(doc.page_content:[200] + "... # Print first 200 chars of each print()/code
#Adım 8 # Örnek kullanımı sorgusu = "Şeker hastalığı ile ilgili en zor kısmı nedir?" # Gerçek soru sonucu ile değiştirin = ask_question_with_fallback(query) # Görüntüleme sonuçları baskı("Cevap:") print(result["answer"]) print(f"\nSource: {result['source']}") if result["source_documents"]: print("\nSource Documents:") for i, doc in enumerate(result["source_documents"]): print(f"Source {i+1}:") print(doc.page_content:[200] +") # Print 200 ilk harfleri her print source()

Adım 8'den çıkışım aşağıdadır. model, FAISS mağazasından benzer bir belgeyi tanımlayan RAG'ı kullanır ve sorumu yanıtlar.

Adım 8'den çıkışım aşağıdadır. model, FAISS mağazasından benzer bir belgeyi tanımlayan RAG'ı kullanır ve sorumu yanıtlar.
İndir

Sonuç olarak, RAG'ı URL'lerle kullanmak, diyabetle ilgili sorgularda daha fazla bilgi edinme için güçlü bir yaklaşımdır. Reddit gibi topluluk platformlarından gerçek dünya görüşlerini açık kaynaklı LLM'lerin yanı sıra birleştirerek kişiselleştirilmiş ve doğru bilgileri sunabiliriz - sonuçta, bunu her gün yaşayanlardan daha iyi bilen var mı?

Bu yöntem sadece maliyet verimli değil, aynı zamanda işbirliğini de teşvik eder, sonunda diyabet yöneten bireyler için destek geliştirir.» Hr

Kişisel Fotoğrafı tarafından Suzy Hazelwood: https://www.pexels.com/photo/close-up-photo-of-sugar-cubes-in-glas-jar-2523650/

Süzy Hazelwood tarafından özel fotoğraf: https://www.pexels.com/photo/close-up-photo-of-sugar-cubes-in-glass-jar-2523650/

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks