489 測定値
489 測定値

Reddit URLs on Diabetes: Open Source LLMs for Enhanced Knowledge Retrievalについて

Shilpi Bhattacharyya7m2025/03/27
Read on Terminal Reader

長すぎる; 読むには

LLMを使用して糖尿病に関する経験的データを調達することに興味があるため、私はOllamaとこの実験を実施しました - こうしたタスクに利用できる多くのオープンソースのLLMの1つです。
featured image - Reddit URLs on Diabetes: Open Source LLMs for Enhanced Knowledge Retrievalについて
Shilpi Bhattacharyya HackerNoon profile picture

Large Language Modelsは信じられないほど強力で、膨大なデータコルポラで訓練されてきたことは印象的です。しかし、私たちが創始者への旅に出かけるとき、これらのモデルを自宅で訓練する予算がいくつありますか? おそらく、非常に少ないでしょう。


しかし、これらの事前訓練されたLLMは私たちに役に立ちますか? もちろん、それらがオープンソースである場合。


So, how exactly are they helpful? Most of us in the AI field are aware of RAGs or have at least heard of them. Let me provide a simple one-line definition. Retrieval-augmented generation is exactly what it sounds like - it retrieves data from the external sources we provide and increases it to the LLM output.


それは、私たちが外部で提供する知識を組み込む一方でLLMの生成力を活用し、望ましいコルプスから出力を生成するために非常に有用である。


私は特に私たちが食べる方法に興味があり、食べ物や体に関して「ゴミ入りゴミを出す」という概念を深く信じています。私たちが自然に健康的な食べ物で自分自身を養うなら、私たちは自然を反映します - 強く、活気のある、そして止められない。しかし、私たちが人工的な、無生命の食べ物を消費するなら、私たちは同じように見え、感じ始めます - 排泄され、不自然です。


そして誰が本当に糖尿病で暮らす本当の痛みの点を理解しているのか?それは単純です - 最初からそれを経験する人々。 糖尿病に関する経験的データをLLMを使用して調達することに興味があるので、私はこの実験をOllamaと実施しました - こうしたタスクに利用できる多くのオープンソースLLMの1つです。


I'm sharing my notebook step by step with an explanation at each stage. Additionally, to help understanding, I'm including a high-level architecture diagram.

さらに、理解を助けるために、私は高レベルのアーキテクチャ図を含んでいる。

RAG System Architecture Diagram

RAG System Architecture Diagram


ステップ1:複数のURLからコンテンツを回収して処理します. We scrape text from the provided list of Reddit URLs and store it in all_texts.

ステップ1:複数のURLからコンテンツを回収して処理します. We scrape text from the provided list of Reddit URLs and store it in all_texts.トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トトップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > ト

ステップ2:テキストをより効率的なテキスト処理のためにより管理可能なブロックに分割します。Step 2: We split the scraped text into more manageable pieces for efficient text processing. また、メモリの使用量を削減し、検索パフォーマンスを向上させることができます。
#ステップ2:すべてのコンテンツをクランクに分割する text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) all_chunks = [] all_chunks.extend(text_splitter.split_text(text)) 
# Step 2: Split all content into chunks text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) all_chunks = [] for text in all_texts: all_chunks.extend(text_splitter.split_text(text))

ステップ3: Ollama embeddings を初期化します。 Embeddings は、テキストのセマンティックな意味をキャプチャする原文の数値(ベクトル)表示です。 Embeddings により、さまざまな ML モデルがテキストを処理し、効果的に理解できます。ステップ3:我々はOllama embeddingsを初期化します。 Embeddingsは、テキストのセマンティックな意味をキャプチャする原文の数値(ベクトル)表示です。 Embeddingsは、さまざまなMLモデルを処理し、テキストを効果的に理解することができます。
# Step 3: Initialize Ollama embeddings embeddings = OllamaEmbeddings(model="llama2") # Adjust model name if needed 
# Step 3: Initialize Ollama embeddings embeddings = OllamaEmbeddings(model="llama2") # Adjust model name if needed

ステップ4:Facebook AI Similarity Search (FAISS) は、高次元ベクターの効率的な類似性検索とクラスタリングのためのライブラリです。 from_texts 関数はテキストのブロックをベクターに変換し、FAISS ベクターストアに保存します。ステップ4:Facebook AI Similarity Search (FAISS) は、高次元ベクターの効率的な類似性検索とクラスタリングのためのライブラリです。 from_texts 関数は、テキストの部分をベクターに変換し、FAISS ベクターストアに保存します。
# Step 4: FAISS ベクトルストアを作成する すべてのブランク vector_store = FAISS.from_texts(all_chunks, embeddings) 
# Step 4: Create a FAISS vector store using all chunks vector_store = FAISS.from_texts(all_chunks, embeddings) Step 5: We initialize Ollama LLM, which will generate responses or process queries based on the knowledge stored in embeddings in the FAISS vector store from step 4. 私たちは、ステップ4からFAISSベクターストアに埋め込まれた知識に基づいてOllama LLMを初期化します。Step 5: We initialize Ollama LLM, which will generate responses or process queries based on the knowledge stored in embeddings in the FAISS vector store from step 4. フェイスベクターストアに格納された知識に基づいて回答または処理クエリを生成します。
 #ステップ5:Ollama LLM llm = Ollama(model="llama2", temperature=0.3) 
# Step 5: オルラマ LLM llm = オルラマ(model="llama2", temperature=0.3) を初期化する

Together, steps 3-5 enable RAG, where the LLM can draw knowledge from stored chunks in the vector store and use the retrieved context to answer a user's query in the most relevant way.

一緒に、ステップ3〜5は、RAGを可能にし、LLMはベクトルストアの保存されたブランドから知識を抽出し、検索された文脈を使用して、ユーザーのクエリに最も関連する方法で答えることができます。


ステップ6:ここでは、 ask_question_with_fallback 関数を定義して、ユーザーのクエリに答えるために保存された知識をクエリします。しかし、同様のドキュメントを見つけることができず、または類似性のスコアが低い場合は、基本的な LLM (Ollama here) の一般的な知識に戻ります。Step 6: Here, we define the ask_question_with_fallback function to query the stored knowledge to answer a user's query. But if it can't find similar docs or the similarity score is low, it will fall back to the general knowledge of the underlying LLM (Ollama here).
 rag>#ステップ 6: docs で質問回答機能 def ask_question_with_fallback(query)を作成する: # 関連ドキュメント docs = vector_store.similarity_search(query, k=3) docs = vector_get('score', 1.0) < docs で質問(query, k=3)を作成する: docs で print(f"Retrieved doc_knowledge(query) if not docs: return {doc.page_knowledge[:200]}) # 関連ドキュメントがない場合、一般的な知識 #if not docs or all(doc.metadata.get('score', 1.0) < 0.3 for docs で docs: # return use_fall_general#ステップ 6: docs で質問回答機能 def ask_question_with_fallback(query): # Retrieve relevant documents docs = vector_store.similarity_search(query, k=3) docs = vector_store.get.similarity_search(query, k=3) for docs: print(f"Retrieved doc_knowledge(query) if not docs: return use_doc.page_knowledge(query))) # if no relevant documents or low similarity, use general knowledge #if not docs or all(doc.metadata.get.get('score 1.0',) < 0.3 for doc in docs: # return use_general_knowledge(query) if not docs: return use_general_kn

ステップ7:これはバックバック機能です。ステップ6で関連する文書が見つからない場合、LLMは一般的な知識を使用してユーザーのクエリに答えることができます。ステップ7:これはバックバック機能です。ステップ6で関連する文書が見つからない場合は、LLMは一般的な知識を使用してユーザーのクエリに答えます。
# Step 7: Define fallback general knowledge function def use_general_knowledge(query): general_prompt = f"" この質問にあなたの一般的な知識を使用して答えましょう: {query} 直接的かつ有用な回答を提供します。あなたが知らない場合は、単にそう言うだけです。 "" general_answer = llm(general_prompt) 返します { "answer": general_answer, "source": "General knowledge", "source_documents": [] } 
# Step 7: Define fallback general knowledge function def use_general_knowledge(query): general_prompt = f"" あなたの一般的な知識を使用してこの質問に答えましょう: {query} あなたが知らない場合は、単にそう言ってください。 "" general_answer = llm(general_prompt) 返す { "answer": general_answer, "source": "General knowledge", "source_documents": [] }

ステップ8:このステップでは、このRAGメカニズムを使用する方法の例を示します。あなたはモデルにクエリを提供し、LLMはあなたのクエリに答えるために外部または内部の知識を使用します。ステップ8:このステップでは、このRAGメカニズムを使用する方法の例を示します。あなたはモデルにクエリを提供し、LLMはあなたのクエリに答えるために外部または内部の知識を使用します。
#ステップ8 # 例の使用クエリ=「糖尿病管理について最も難しい部分は何ですか?」 # 実際の質問結果 = ask_question_with_fallback(query) # 表示結果印刷("Answer:")印刷(f"result["answer"])印刷(f"\nSource: {result['source']]})印刷("source_documents:")印刷("\nSource Documents:") i、doc in enumerate(result["source_documents"])):印刷(f"Source {i+1}:")印刷(doc.page_content:[200] + "... #印刷各ソース印刷の最初の200チャート <(/code>#Step 8 # Example usage query = "What is the hardest part about managing diabetes?" # Replace with your actual question result = ask_question_with_fallback(query) # Display results print("Answer:") 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 first chars of each print source() 

My output from Step 8 is below. The model uses RAG, which identifies a similar document from the FAISS store and answers my query.

My output from Step 8 is below. The model uses RAG, which identifies a similar document from the FAISS store and answers my query. このモデルは、FAISSストアからの類似のドキュメントを識別し、私のクエリに答えます。

結論として、URLを使用してRAGを活用することは、糖尿病関連のクエリにおける強力な知識取得のための強力なアプローチです。Redditのようなコミュニティプラットフォームからの現実的な洞察をオープンソースのLLMに加えて組み合わせることで、私たちはパーソナライズされた正確な情報を提供することができます - 結局のところ、それを毎日生きている人々よりもよく理解できますか?


この方法はコスト効率的であるだけでなく、協力を促進し、最終的に糖尿病を管理する人々のサポートを向上させます。「hr」

スジー・ハゼルウッドによる写真: https://www.pexels.com/photo/close-up-photo-of-sugar-cubes-in-glass-jar-2523650/

フィギュア 写真: https://www.pexels.com/photo/close-up-photo-of-sugar-cubes-in-glass-jar-2523650/

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks