公益项目经常面临沟通负担重、响应不及时的问题。本文通过一个可运行的 Demo,手把手教你用 LangChain 和 RAG 架构搭建一个 AI 聊天助手,让它来帮你自动回答常见问题、对接知识库,大幅提升沟通效率。
很多公益组织团队不大,沟通任务却一点都不少。无论是志愿者问活动安排、捐赠人咨询项目细节,还是公众提问相关政策,回答这些问题都很花时间。
如果有个 AI 聊天助手,能随时在线回答 FAQ 或文档里的内容,是不是就能让团队更专注在真正需要人参与的事上?
接下来我们就来聊聊这个 AI Bot 要怎么做,用到哪些技术,落地起来有多快。
传统 chatbot 如果只是靠关键词匹配,那就太弱了。我们想做的是:
这就需要用到现在很流行的 RAG(Retrieval Augmented Generation)架构,搭配 LangChain 来做流程编排。
我们用一份 FAQ 文档做示例,构建一个能实时问答的助手。
公益AI助手/
├── main.py
├── data/
│ └── faq.txt
├── utils/
│ └── embedding.py
├── requirements.txt
import streamlit as st
from langchain.vectorstores import FAISS
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.chat_models import ChatOpenAI
from langchain.chains import RetrievalQA
from utils.embedding import load_docs, create_vectorstore
st.title("公益问答小助手 🤖")
# 初始化模型和知识库
llm = ChatOpenAI(temperature=0)
vectorstore = create_vectorstore("data/faq.txt")
qa_chain = RetrievalQA.from_chain_type(llm=llm, retriever=vectorstore.as_retriever())
# 用户输入
question = st.text_input("请输入你的问题:")
if question:
response = qa_chain.run(question)
st.markdown(f"**回答:** {response}")
from langchain.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import FAISS
from langchain.embeddings.openai import OpenAIEmbeddings
def load_docs(filepath):
loader = TextLoader(filepath)
return loader.load()
def create_vectorstore(filepath):
docs = load_docs(filepath)
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
docs_split = splitter.split_documents(docs)
embeddings = OpenAIEmbeddings()
return FAISS.from_documents(docs_split, embeddings)
你可以把下列问题写入 faq.txt
文件中:
Q: 公益活动报名时间是?
A: 每月 10 日开放报名,可通过公众号或官网提交申请。
Q: 如何申请成为志愿者?
A: 提交个人信息表,经审核后可进入志愿者群。
当然可以,只要支持 OpenAI 风格 API 接口,比如 Mistral、DeepSeek、Moonshot 都能轻松替换。
可以用 Chunk 机制配合向量库搜索,不会卡顿。
是的,文档是文本格式,更新 FAQ 不用改代码,只要重建索引即可。
这个 AI 聊天助手虽然是个“小项目”,但实用性超高。尤其是对于沟通压力大的公益团队,它能高效解答重复问题,让人力资源用在更关键的事上。
通过 LangChain + 向量检索,你可以快速打造一个适配自己组织的 AI 服务助手,而且可拓展性也很强。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。