LangChain教程:使用嵌入模型从向量数据库搜索相关内容,并根据内容、提示词模板类生成答案 作者:马育民 • 2026-03-05 12:00 • 阅读:10009 # 介绍 本案例分成两个步骤: 1. 使用嵌入模型从向量数据库搜索相关内容,相关技术: - DashScopeEmbeddings - Chroma向量数据库 2. 根据搜索内容、提示词模板类生成答案 - ChatPromptTemplate - ChatTongyi ``` from langchain_chroma import Chroma from langchain_community.embeddings import DashScopeEmbeddings from langchain_community.chat_models.tongyi import ChatTongyi from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser from dotenv import load_dotenv # 加载环境变量(需配置 OPENAI_API_KEY) load_dotenv() # ----根据问题搜索向量----------------------- print("----根据问题搜索向量-----------------------") # 初始化大模型 embeddings = DashScopeEmbeddings(model="text-embedding-v2") # 创建数据库对象 db = Chroma( embedding_function=embeddings, persist_directory="./my_chroma_db", collection_name="test_collection" ) # 用户提问的问题 # question = "ChromaDB" question = "25年报告概述" results = db.similarity_search( query=question, # 搜索内容 k=2) # 搜索出来的内容 search_content = "" for item in results: print(item.page_content) search_content += item.page_content # -------根据搜索结果,生成答案-------------- print("\n\n-------根据搜索结果,生成答案--------------\n\n") # 定义模板 prompt = ChatPromptTemplate.from_messages([ ("system", "根据我提供的资料,简洁回答用户问题,资料室:{content}"), ("human", "用户提问:{quest}") ]) def print_prompt(prompt): """ 打印提示词 :param prompt: :return: """ print("-------提示词:\n") print(prompt.to_string()) print("-------提示词结束\n") return prompt # 初始化模型 chat = ChatTongyi(model="qwen3-max") chain = prompt | print_prompt | chat | StrOutputParser() # 调用链 res = chain.invoke({ "quest": question, "content": search_content }) print("结果:", res) ``` 原文出处:http://malaoshi.top/show_1GW2tDHp3AXH.html