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

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

發(fā)布于 2024-8-8 17:52
瀏覽
0收藏

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

本文指導(dǎo)讀者如何結(jié)合Ollama、Llama 3和Milvus搭建高效的檢索增強(qiáng)生成(RAG)系統(tǒng),創(chuàng)建一個(gè)能解答特定問(wèn)題的Q&A聊天機(jī)器人。

1 RAG概述

RAG,即檢索增強(qiáng)生成,是一種通過(guò)融合額外的數(shù)據(jù)源來(lái)提升大型語(yǔ)言模型(LLMs)性能的技術(shù)。一個(gè)典型的RAG應(yīng)用流程包括:

  • 索引:這涉及從數(shù)據(jù)源中提取數(shù)據(jù),并在Milvus中進(jìn)行加載、分割和存儲(chǔ),形成索引。
  • 檢索與生成:在應(yīng)用運(yùn)行期間,RAG會(huì)處理用戶的查詢,從Milvus中的索引里檢索出相關(guān)數(shù)據(jù),然后利用這些數(shù)據(jù),LLM生成一個(gè)更加精準(zhǔn)的響應(yīng)。

2 先決條件

請(qǐng)先確認(rèn)系統(tǒng)滿足以下先決條件:

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

3 設(shè)置

安裝完所有前提條件后,就可以設(shè)置 RAG 應(yīng)用程序了:

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

安裝依賴項(xiàng)

要運(yùn)行此應(yīng)用程序,需要安裝所需的庫(kù)??梢灾苯邮褂胮ip進(jìn)行安裝。

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

4 構(gòu)建RAG應(yīng)用程序

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

首先使用PyPDFLoader導(dǎo)入PDF中的數(shù)據(jù)

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

分割數(shù)據(jù)

使用RecursiveCharacterTextSplitter將加載的數(shù)據(jù)分解為可管理的塊

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

獲取嵌入并在Milvus中存儲(chǔ)數(shù)據(jù)

接下來(lái),使用Jina AI的Small English嵌入(https://huggingface.co/jinaai/jina-embeddings-v2-small-en)將文本數(shù)據(jù)轉(zhuǎn)換為向量嵌入,并存儲(chǔ)到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極大簡(jiǎn)化了在本地加載和運(yùn)用大型語(yǔ)言模型(LLM)的過(guò)程。在本例中,將應(yīng)用Meta公司開發(fā)的Llama 3模型進(jìn)行操作。以下是如何加載:

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構(gòu)建QA鏈

最后,構(gòu)建QA鏈以處理和響應(yīng)用戶查詢:

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 運(yùn)行應(yīng)用程序

通過(guò)最后一個(gè)單元格中的 result 變量執(zhí)行 RAG 應(yīng)用程序。

問(wèn)答交互示例:

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搭建了一個(gè)功能強(qiáng)大的本地大型語(yǔ)言模型(LLM)。。這一配置不僅讓處理龐大的數(shù)據(jù)集變得輕松可行,同時(shí)也打造了一個(gè)反應(yīng)迅速的本地問(wèn)答系統(tǒng)。

本文轉(zhuǎn)載自?? AI科技論談??,作者: AI科技論談

標(biāo)簽
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
主站蜘蛛池模板: 美女视频一区 | 91欧美激情一区二区三区成人 | 北条麻妃一区二区三区在线视频 | 国偷自产av一区二区三区 | 国产精品日产欧美久久久久 | 亚洲国产成人精品久久 | 综合网视频| 本道综合精品 | 久久久久国产精品一区三寸 | 男女视频在线观看网站 | 九久久 | 精品啪啪 | 国产免费一级片 | 一级毛片在线视频 | 亚洲自拍偷拍视频 | 国产在线激情视频 | 亚洲成av人片在线观看无码 | 日韩在线观看网站 | 日日夜夜天天 | 日韩欧美国产一区二区 | 国产精品久久777777 | 福利二区 | 国产午夜精品一区二区三区四区 | 一区精品在线观看 | 日本一区二区三区精品视频 | 欧美国产精品 | 日本精品一区二区三区在线观看视频 | 影音av | 亚洲国产一区在线 | 欧美日韩国产一区二区三区 | 日韩一级精品视频在线观看 | 涩涩视频在线观看 | 国产电影一区二区 | 在线免费国产 | 亚洲精品福利视频 | 精品av | 色秀网站 | 国产午夜一级 | 亚洲激情av| 国产一级片网站 | 欧美在线视频网 |