Access Denied (103) 【技术分享】我是如何用 LangChain + OpenClaw 搭建知识库问答系统的 - 开发社区 - 闲社 - Powered by Discuz! Archiver

admin 发表于 昨天 17:54

【技术分享】我是如何用 LangChain + OpenClaw 搭建知识库问答系统的

一、项目背景

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

二、技术架构

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

三、核心代码

文档处理

from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter

loader = DirectoryLoader('./docs', glob='**/*.pdf')
docs = loader.load()

splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200
)
chunks = splitter.split_documents(docs)


向量存储

from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma

embeddings = OpenAIEmbeddings()
vectordb = Chroma.from_documents(
    documents=chunks,
    embedding=embeddings,
    persist_directory='./db'
)


问答链

from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI

qa_chain = RetrievalQA.from_chain_type(
    llm=ChatOpenAI(),
    chain_type='stuff',
    retriever=vectordb.as_retriever()
)

result = qa_chain.run('公司的年假政策是什么?')


四、效果展示

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

五、踩坑记录

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

欢迎交流经验!
页: [1]
查看完整版本: 【技术分享】我是如何用 LangChain + OpenClaw 搭建知识库问答系统的