| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- from langchain_community.document_loaders import PyMuPDFLoader
- from langchain_text_splitters import RecursiveCharacterTextSplitter
- from langchain_community.embeddings import DashScopeEmbeddings
- from langchain_community.vectorstores import Chroma
- from langchain_core.prompts import ChatPromptTemplate
- from langchain_community.chat_models import ChatTongyi
- from langchain_core.output_parsers import StrOutputParser
- # ========== 第一步:加载文档 ==========
- loader = PyMuPDFLoader("./2222.pdf")
- pages = loader.load()
- # ========== 第二步:清洗数据(可选,根据文档质量决定)==========
- # clean_pages = [clean_pdf_text(page) for page in pages]
- # ========== 第三步:分块 ==========
- splitter = RecursiveCharacterTextSplitter(
- # 分隔符优先级:段落 → 换行 → 句号 → 空格 → 硬切
- #separators=["\n\n", "\n", "。", "!", "?", " ", ""],
- separators = ["\n\n", "\n", "。", "!", "?", " "],
- # 每个块最大 50 字符
- chunk_size=100,
- # 相邻块重叠 10 字符(chunk_size 的 20%)
- chunk_overlap=10,
- # 长度计算函数
- length_function=len
- )
- docs = splitter.split_documents(pages)
- # ========== 第四步:向量化 + 存入向量库 ==========
- vectorstore = Chroma.from_documents(
- documents=docs,
- embedding=embedding_model,
- persist_directory="./test1_db"
- )
- # ========== 第五步:创建检索器 ==========
- retriever = vectorstore.as_retriever(search_kwargs={"k": 3})
- # ========== 第六步:提问 ==========
- query = "团队管理"
- relevant_docs = retriever.invoke(query)
- # ========== 第七步:生成回答 ==========
- context = "\n\n---\n\n".join([d.page_content for d in relevant_docs])
- prompt = ChatPromptTemplate.from_template("""
- 你是一个专业的知识库助手。请根据以下上下文回答问题。
- **规则:**
- - 只基于提供的上下文回答,不要编造
- - 如果上下文中没有相关信息,直接说「根据现有资料,我找不到这个问题的答案」
- - 回答要简洁直接,引用原文时用引号
- **上下文:**
- {context}
- **问题:**
- {question}
- """)
- llm = ChatOpenAI(
- model_name="kimi-k2.6",
- api_key=ds_open_key, # 在 platform.deepseek.com 获取
- base_url=ds_open_url # DeepSeek API 地址
- )
- chain = prompt | llm | StrOutputParser()
- answer = chain.invoke({"context": context, "question": query})
- print(answer)
- 根据上下文,团队管理的相关内容如下:
- **提高团队绩效的措施:**
- - "改进方法提高效率"
- - "采用快速跟进"
- - "制定奖惩规则,提高团队绩效"
- **团队管理中存在的问题:**
- - "没有明确各团队成员的职责"
- - "没有制定团队基本规则"
- - "对于团队冲突没有及时、合理解决"
|