凉城老泉
手机扫码
四.LangChain调用文心一言向量模型实现本地文档查询
凉城老泉  2025-02-27     阅读(80)   分享



让大模型在我们本地向量空间回答问题:

事例代码如下:

from langchain_community.embeddings import QianfanEmbeddingsEndpoint
from langchain_community.vectorstores import Chroma
from langchain_core.documents import Document
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnableLambda,RunnablePassthrough
from qifan_ai import CreateMyLLM
from lc_deepseek_ai import CreateChartDeepSeek
import os

os.environ["QIANFAN_AK"] = "apikey"
os.environ["QIANFAN_SK"] = "密钥"

llm =CreateMyLLM()# CreateChartDeepSeek()
#组织本地文档,或读取本地文件,这里我们手工编写一些文档,来做实验
documents=[
    Document(
        page_content="处理图像和视频,如目标检测、语义分割、图像生成等。著名的计算机视觉大模型有Inception、ResNet、DenseNet等",
        metadata={
            "source": "计算机视觉"
        }
    ),
    Document(
            page_content="主要用于处理自然语言文本,如文本分类、命名实体识别、情感分析等。著名的自然语言处理大模型有GPT-3、BERT、ELMo等",
            metadata={
                "source": "语言大模型"
            }
        ),
    Document(
            page_content="这类模型主要用于语音信号的处理,如语音识别、语音合成等。著名的语音识别大模型有WaveNet、Transformer、DeepSpeech等",
            metadata={
                "source": "语音识别(ASR)大模型"
            }
        ),
    Document(
            page_content="这类模型主要用于个性化推荐,如商品推荐、内容推荐等。著名的推荐系统大模型有collaborative filtering、content-based filtering等",
            metadata={
                "source": "推荐系统大模型"
            }
        ),
    Document(
            page_content="混元大模型由腾讯推出,主打社交模型。腾讯作为世纪华通(主营社交娱乐)的第二大股东,持有10%的股份,确保了混元大模型在社交和娱乐领域的高水平应用",
            metadata={
                "source": "腾讯混元大模型"
            }
        ),
]
#model_name = "sentence-transformers/all-MiniLM-L6-v2"
#embeddings = HuggingFaceEmbeddings(model_name=model_name)
v_store=Chroma.from_documents(documents, embedding=QianfanEmbeddingsEndpoint())
#res=v_store.similarity_search("推荐系统大模型")
#res=v_store.similarity_search_with_score("情感分析")
#print(res)
r=RunnableLambda(v_store.similarity_search).bind(k=1)
#res=r.batch(["听到一段语音,怎么去处理"])
#print(res)
template = """请根据上下文回答下面的问题:{question}
上下文:{context}"""
prompt = ChatPromptTemplate.from_messages([("human",template)])
chain={"question":RunnablePassthrough(),"context":r}|prompt|llm
res=chain.invoke("请问怎么处理语音识别")
print(res)