123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- # coding=gbk
- from langchain.vectorstores import Chroma
- from langchain.embeddings.huggingface import HuggingFaceEmbeddings
- import os
- # 定义 Embeddings
- embeddings = HuggingFaceEmbeddings(model_name="/mnt/sdb/zhaoyuan/rongrunxiang/acge_text_embedding")
- # 向量数据库持久化路径
- persist_directory = 'data_base/vector_db/chroma'
- # 加载数据库
- vectordb = Chroma(
- persist_directory=persist_directory,
- embedding_function=embeddings
- )
- from LLM import ChatGLM_LLM
- modelPath = "/mnt/sdb/zhaoyuan/rongrunxiang/glm-4-9b-chat"
- llm = ChatGLM_LLM(model_path = modelPath)
- llm.predict("你是谁")
- from langchain.prompts import PromptTemplate
- # 我们所构造的 Prompt 模板
- template = """根据用户的问题,从提供的上下文中找到相应的知识,并据此创作一个适合于3-6岁小孩的绘本文本。尽量生动有趣。
- {context}
- 问题: {question}
- 文本:"""
- # 调用 LangChain 的方法来实例化一个 Template 对象,该对象包含了 context 和 question 两个变量,在实际调用时,这两个变量会被检索到的文档片段和用户提问填充
- QA_CHAIN_PROMPT = PromptTemplate(input_variables=["context","question"],template=template)
- from langchain.chains import RetrievalQA
- qa_chain = RetrievalQA.from_chain_type(llm,retriever=vectordb.as_retriever(),return_source_documents=True,chain_type_kwargs={"prompt":QA_CHAIN_PROMPT})
- # 检索问答链回答效果
- question = "什么是哺乳动物"
- result = qa_chain({"query": question})
- print("检索问答链回答 question 的结果:")
- print(result["result"])
- if "source_documents" in result:
- print("\n找到的文档片段:")
- for doc in result["source_documents"]:
- print(doc) # 这里假设文档片段是直接可打印的,可能需要根据实际情况调整格式
- # 仅 LLM 回答效果
- result_2 = llm(question)
- print("大模型回答 question 的结果:")
- print(result_2)
|