成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

基于Llama 3、Ollama、Milvus、LangChain,快速搭建本地RAG

發布于 2024-8-8 17:52
瀏覽
0收藏

隨著Llama、Mistral、Gemma等開源大型語言模型(LLMs)的興起,本地運行LLMs的實用性和必要性日益凸顯,尤其是與商業模型如GPT-3或GPT-4相比時,其成本效益展現出明顯的優勢。

本文指導讀者如何結合Ollama、Llama 3和Milvus搭建高效的檢索增強生成(RAG)系統,創建一個能解答特定問題的Q&A聊天機器人。

1 RAG概述

RAG,即檢索增強生成,是一種通過融合額外的數據源來提升大型語言模型(LLMs)性能的技術。一個典型的RAG應用流程包括:

  • 索引:這涉及從數據源中提取數據,并在Milvus中進行加載、分割和存儲,形成索引。
  • 檢索與生成:在應用運行期間,RAG會處理用戶的查詢,從Milvus中的索引里檢索出相關數據,然后利用這些數據,LLM生成一個更加精準的響應。

2 先決條件

請先確認系統滿足以下先決條件:

  • Docker與Docker-Compose - 請確保系統中已安裝Docker及Docker-Compose工具。
  • Milvus獨立版 - 使用Milvus的獨立版本,它可以通過Docker Compose方便地進行管理。具體安裝方法,請參考文檔說明(https://milvus.io/docs/install_standalone-docker-compose.md)。
  • Ollama - 在系統上安裝Ollama;訪問其官方網站獲取最新的安裝指南。

3 設置

安裝完所有前提條件后,就可以設置 RAG 應用程序了:

  • 使用命令docker-compose up -d啟動Milvus獨立實例。 此命令以分離模式啟動Milvus實例,在后臺安靜運行。
  • 通過命令ollama pull <name_of_model>?獲取LLM模型。 通過模型庫查看可用模型列表。 例如:ollama pull llama3此命令下載模型的默認版本(通常是最新和最小的版本)。
  • 使用命令ollama run <name-of-model>直接從命令行與模型聊天。

安裝依賴項

要運行此應用程序,需要安裝所需的庫。可以直接使用pip進行安裝。

pip install langchain pymilvus ollama pypdf langchainhub langchain-community langchain-experimental

4 構建RAG應用程序

如前所述,RAG的主要組成部分之一是索引數據。

首先使用PyPDFLoader導入PDF中的數據

from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader(
    "https://d18rn0p25nwr6d.cloudfront.net/CIK-0001813756/975b3e9b-268e-4798-a9e4-2a9a7c92dc10.pdf"
)
data = loader.load()

分割數據

使用RecursiveCharacterTextSplitter將加載的數據分解為可管理的塊

from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
all_splits = text_splitter.split_documents(data)

獲取嵌入并在Milvus中存儲數據

接下來,使用Jina AI的Small English嵌入(https://huggingface.co/jinaai/jina-embeddings-v2-small-en)將文本數據轉換為向量嵌入,并存儲到Milvus中。

from langchain_community.embeddings.jina import JinaEmbeddings
from langchain.vectorstores.milvus import Milvus

embeddings = JinaEmbeddings(
   jina_api_key=JINA_AI_API_KEY, model_name="jina-embeddings-v2-small-en"
)
vector_store = Milvus.from_documents(documents=all_splits, embedding=embeddings)

加載LLM

Ollama極大簡化了在本地加載和運用大型語言模型(LLM)的過程。在本例中,將應用Meta公司開發的Llama 3模型進行操作。以下是如何加載:

from langchain_community.llms import Ollama
from langchain.callbacks.manager import CallbackManager
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler

llm = Ollama(
    model="llama3",
    callback_manager=CallbackManager(
        [StreamingStdOutCallbackHandler()]
    ),
    stop=["<|eot_id|>"],
)

使用Langchain構建QA鏈

最后,構建QA鏈以處理和響應用戶查詢:

from langchain import hub
from langchain.chains import RetrievalQA
query = input("\nQuery: ")
prompt = hub.pull("rlm/rag-prompt")
qa_chain = RetrievalQA.from_chain_type(llm, retriever=vectorstore.as_retriever(), chain_type_kwargs={"prompt": prompt})
result = qa_chain({"query": query})
print(result)

5 運行應用程序

通過最后一個單元格中的 result 變量執行 RAG 應用程序。

問答交互示例:

Query: What is this document about?

The document appears to be a 104 Cover Page Interactive Data File for an SEC filing. It contains information about the company's financial statements and certifications.{'query': 'What is this document about?', 'result': "The document appears to be a 104 Cover Page Interactive Data File for an SEC filing. It contains information about the company's financial statements and certifications."}

這樣就成功使用Ollama、Llama 3、Langchain和Milvus搭建了一個功能強大的本地大型語言模型(LLM)。。這一配置不僅讓處理龐大的數據集變得輕松可行,同時也打造了一個反應迅速的本地問答系統。

本文轉載自?? AI科技論談??,作者: AI科技論談

收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 久久www免费视频 | 一级二级三级在线观看 | 91精品久久久久久久久久入口 | 成人精品国产 | 色综合99| 男女羞羞视频免费 | 精品国产乱码久久久久久牛牛 | 农村真人裸体丰满少妇毛片 | 成人在线视频免费看 | 国产一级在线观看 | 99久久99热这里只有精品 | 91五月婷蜜桃综合 | 久久免费小视频 | 亚洲欧美在线视频 | 日韩在线视频免费观看 | 国产综合区 | 爱高潮www亚洲精品 中文字幕免费视频 | 中文字幕在线第一页 | 欧美成人免费在线视频 | 成人精品 | 国产一区二区三区四区在线观看 | 国产在线不卡 | 久久精品小视频 | 91av在线影院 | 日韩欧美三区 | 在线观看国产视频 | 国产中文字幕av | 高清一区二区 | 麻豆成人在线视频 | 国产欧美日韩一区二区三区在线 | 欧美精品在线一区二区三区 | 一区二区在线免费观看 | www亚洲免费国内精品 | 国产成在线观看免费视频 | 二区不卡 | 欧美一区二区三区在线观看 | 狠狠干天天干 | 99免费在线视频 | 久久不射网 | 久久久久亚洲精品 | 日韩精品免费 |