25 LangChain组件——检索向量并构建提示词
1.知识点补充:向量存储的实例,通过add_texts(list)方法可以快速添加到向量存储中。
2.代码实战
"""
提示词:用户的提问 + 向量库中检索到的参考资料
"""
from langchain_community.chat_models import ChatTongyi
from langchain_core.vectorstores import InMemoryVectorStore
from langchain_community.embeddings import DashScopeEmbeddings
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
def print_prompt(prompt):
print(prompt.to_string())
print("=" * 20)
return prompt
model = ChatTongyi(model="qwen3-max")
prompt = ChatPromptTemplate.from_messages(
[
("system", "以我提供的已知参考资料为主,简洁和专业的回答用户问题。参考资料:{context}。"),
("user", "用户提问:{input}")
]
)
vector_store = InMemoryVectorStore(embedding=DashScopeEmbeddings(model="text-embedding-v4"))
# 准备一下资料(向量库的数据)
# add_texts 传入一个 list
vector_store.add_texts(
["减肥就是要少吃多练", "在减脂期间吃东西很重要,清淡少油控制卡路里摄入并运动起来", "跑步是很好的运动哦"])
input_text = "怎么减肥?"
# 检索向量库
result = vector_store.similarity_search(input_text, 2)
reference_text = "["
for doc in result:
reference_text += doc.page_content
reference_text += "]"
chain = prompt | print_prompt | model | StrOutputParser()
res = chain.invoke({"input": input_text, "context": reference_text})
print(res)
学习视频:【黑马程序员大模型RAG与Agent智能体项目实战教程,基于主流的LangChain技术从大模型提示词到实战项目】https://www.bilibili.com/video/BV1yjz5BLEoY/?p=44&share_source=copy_web&vd_source=792a2cb63a1882bff4ed856eadc41a71]https://www.bilibili.com/video/BV1yjz5BLEoY/?p=44&share_source=copy_web&vd_source=792a2cb63a1882bff4ed856eadc41a71
以下是完整的代码实现:
"""
提示词:用户的提问 + 向量库中检索到的参考资料
"""
from langchain_community.chat_models import ChatTongyi
from langchain_core.vectorstores import InMemoryVectorStore
from langchain_community.embeddings import DashScopeEmbeddings
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
def print_prompt(prompt):
print(prompt.to_string())
print("=" * 20)
return prompt
model = ChatTongyi(model="qwen3-max")
prompt = ChatPromptTemplate.from_messages([
("system", "你是一个健身教练,请根据以下参考资料回答用户的问题。如果参考资料中没有相关答案,请根据你的知识回答。\n参考资料:{context}"),
("human", "{input}")
])
vector_store = InMemoryVectorStore(embedding=DashScopeEmbeddings(model="text-embedding-v4"))
# 准备一下资料(向量库的数据)
# add_texts 传入一个 list
vector_store.add_texts([
"减肥需要控制饮食,减少高热量食物的摄入,并增加体育锻炼。",
"有氧运动如跑步、游泳和骑自行车可以帮助燃烧脂肪。",
"力量训练可以增加肌肉量,提高基础代谢率,从而帮助减肥。",
"饮食上建议多吃蔬菜、水果和全谷物,少吃油炸食品和甜食。"
])
input_text = "怎么减肥?"
# 检索向量库
result = vector_store.similarity_search(input_text, 2)
reference_text = "\n".join()
chain = prompt | print_prompt | model | StrOutputParser()
res = chain.invoke({"input": input_text, "context": reference_text})
print(res)
代码解释:
1. 首先创建了 ChatTongyi 模型和 ChatPromptTemplate 提示词模板
2. 创建向量存储并添加减肥相关的文本资料到向量库中
3. 使用 similarity_search 方法检索与输入问题相关的文本
4. 将检索结果合并为参考文本,并与用户问题一起构建提示词
5. 通过链式调用处理并输出结果
运行结果会显示构建的完整提示词和模型的回答。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 学习 不二如是 发表于 2026-3-8 16:23
学习
{:13_438:} 糖逗 发表于 2026-3-8 16:24
{:13_428:} 不二如是 发表于 2026-3-8 16:25
{:13_439:}
页:
[1]