一、Langchain版本
1、环境设置
首先下载RAG所需要的模型:
- llama3.1:8b:ollama pull llama3.1:8b
- nomic-embed-text:ollama pull nomic-embed-text
安装本地嵌入、向量存储和模型推理所需的包:
- LangChain架构核心库和社区集成库:pip install langchain langchain_community
- Chroa向量数据库:pip install langchain_chroma
- Ollama库:pip install langchain_ollama
2、文档加载
读取文档
from langchain_community.document_loaders import WebBaseLoader
loader = WebBaseLoader("https://lilianweng.github.io/posts/2023-06-23-agent/")
data = loader.load()
将文档分割为文本块
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
all_splits = text_splitter.split_documents(data)
建立向量存储数据库,使用的文本嵌入模型是nomic-embed-text,将文本块向量化并存储
from langchain_chroma import Chroma
from langchain_ollama import OllamaEmbeddings
local_embeddings = OllamaEmbeddings(model="nomic-embed-text")
vectorstore = Chroma.from_documents(documents=all_splits, embedding=local_embeddings)
相似度检索,将问题(question)向量化,同数据库中的向量化的文本块进行匹配
question = "What are the approaches to Task Decomposition?"
docs = vectorstore.similarity_search(question,k=3)
len(docs)
通过参数k来控制返回的文本块的数量。

实例化大语言模型,使用的语言模型是llama3.1:8b,并测试模型推理是否正常
from langchain_ollama import ChatOllama
model = ChatOllama(
model="llama3.1:8b",
)
response_message = model.invoke(
"Simulate a rap battle between Stephen Colbert and John Oliver"
)
print(response_message.content)

最低0.47元/天 解锁文章
1863

被折叠的 条评论
为什么被折叠?



