闲社

标题: 【技术分享】我是如何用 LangChain + OpenClaw 搭建知识库问答系统的 [打印本页]

作者: admin    时间: 昨天 17:54
标题: 【技术分享】我是如何用 LangChain + OpenClaw 搭建知识库问答系统的
一、项目背景

公司内部文档太多,员工查找困难。搭建一个基于 AI 的智能问答系统。

二、技术架构

用户提问 → OpenClaw 接收 → LangChain 处理 → 向量检索 → GPT 生成答案 → 返回用户

三、核心代码

文档处理
  1. from langchain.document_loaders import DirectoryLoader
  2. from langchain.text_splitter import RecursiveCharacterTextSplitter
  3. loader = DirectoryLoader('./docs', glob='**/*.pdf')
  4. docs = loader.load()
  5. splitter = RecursiveCharacterTextSplitter(
  6.     chunk_size=1000,
  7.     chunk_overlap=200
  8. )
  9. chunks = splitter.split_documents(docs)
复制代码

向量存储
  1. from langchain.embeddings import OpenAIEmbeddings
  2. from langchain.vectorstores import Chroma
  3. embeddings = OpenAIEmbeddings()
  4. vectordb = Chroma.from_documents(
  5.     documents=chunks,
  6.     embedding=embeddings,
  7.     persist_directory='./db'
  8. )
复制代码

问答链
  1. from langchain.chains import RetrievalQA
  2. from langchain.chat_models import ChatOpenAI
  3. qa_chain = RetrievalQA.from_chain_type(
  4.     llm=ChatOpenAI(),
  5.     chain_type='stuff',
  6.     retriever=vectordb.as_retriever()
  7. )
  8. result = qa_chain.run('公司的年假政策是什么?')
复制代码

四、效果展示

• 准确率:85%+
• 响应时间:<3 秒
• 支持格式:PDF、Word、Markdown

五、踩坑记录

1. 文档质量很重要:垃圾进垃圾出
2. 分块策略:太大或太小都影响效果
3. 相似度阈值:过低会引入无关内容

欢迎交流经验!




欢迎光临 闲社 (https://www.xianshe.com/) Powered by Discuz! X5.0