langchain + ollama 读取文件构建问答系统

01 基础调用(官方示例)

from langchain_core.prompts import ChatPromptTemplate
from langchain_ollama.llms import OllamaLLM

template = """Question: {question}

Answer: Let's think step by step."""

prompt = ChatPromptTemplate.from_template(template)

model = OllamaLLM(model="llama3")

chain = prompt | model

chain.invoke({"question": "What is LangChain?"})

02 demo实验

from langchain_core.prompts import ChatPromptTemplate
from langchain_ollama.llms import OllamaLLM

# template 起到一个规定回答问题的格式模板的作用
template = """Question: {question}
Answer: 请用中文回答我的问题."""
prompt = ChatPromptTemplate.from_template(template)
model = OllamaLLM(model="glm4:9b")
chain = prompt | model

while True:
    question = input("请输入您的问题:")
    if question == "结束":
        print("-"*30+"感谢您的使用"+"-"*30)
        break
    answer = chain.invoke({"question": question})
    print(answer)
    print("-"*30)

03 读取txt回答问题官方示例

# import
from langchain_chroma import Chroma
from langchain_community.document_loaders import TextLoader
from langchain_community.embeddings.sentence_transformer import (
    SentenceTransformerEmbeddings,
)
from langchain_text_splitters import CharacterTextSplitter

# load the document and split it into chunks
loader = TextLoader("../../how_to/state_of_the_union.txt")
documents = loader.load()

# split it into chunks
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

# create the open-source embedding function
embedding_function = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")

# load it into Chroma
db = Chroma.from_documents(docs, embedding_function)

# query it
query = "What did the president say about Ketanji Brown Jackson"
docs = db.similarity_search(query)

# print results
print(docs[0].page_content)

04 demo读取txt

from langchain_community.document_loaders.text import TextLoader
from langchain_text_splitters import CharacterTextSplitter
from langchain_community.embeddings import OllamaEmbeddings
from langchain_chroma import Chroma

# 读取文件
document = TextLoader(r"D:\Users\Administrator\Desktop\tttt.txt",encoding='utf8')
document = document.load()
content = document[0].page_content
print(f"文本共计{len(content)}个字符\n\n")
# print(content[:100])
# print(content)

# 切分文本
text_splitter = CharacterTextSplitter(
    separator="。",
    chunk_size=200,
    chunk_overlap=50
)

texts = text_splitter.split_documents(document)



# 转换向量
embedding_function = OllamaEmbeddings(model="nomic-embed-text")
db = Chroma.from_documents(texts, embedding_function)


# 提问
question = "引导中心城市发挥领导力"
search = db.similarity_search(question)
print(search[0].page_content)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值