AI项目问题总结大全

部署运行你感兴趣的模型镜像

1、deepseek和langchain有什么关联以及使用的场景

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、已有的文档目录如何实现知识库检索

在这里插入图片描述
其实就是要把所有文档都加载到向量数据库 大模型才能检索到。

方案一:使用 LangChain/LlamaIndex 框架(推荐)

1. 基于 LangChain 的实现

import os
from langchain.document_loaders import DirectoryLoader, TextLoader, PyPDFLoader, UnstructuredWordDocumentLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import Chroma
from langchain.llms import Ollama  # 或 OpenAI, Tongyi等
from langchain.chains import RetrievalQA

class DocumentQASystem:
    def __init__(self, docs_directory):
        self.docs_directory = docs_directory
        self.vectorstore = None
        
    def initialize_knowledge_base(self):
        """初始化知识库"""
        
        # 1. 文档文档加载 - 根据不同类型使用不同的loader
        loaders = {
            '.txt': TextLoader,
            '.pdf': PyPDFLoader,
            '.docx': UnstructuredWordDocumentLoader,
        }
        
        all_docs = []
        for ext, loader_class in loaders.items():
            try:
                loader = DirectoryLoader(
                    self.docs_directory, 
                    glob=f"**/*{ext}", 
                    loader_cls=loader_class,
                    show_progress=True
                )
                docs = loader.load()
                all_docs.extend(docs)
            except Exception as e:
                print(f"加载 {ext} 文件时出错: {e}")
        
        print(f"共加载 {len(all_docs)} 个文档")
        
        # 2. 文本切分
        text_splitter = RecursiveCharacterTextSplitter(
            chunk_size=1000,      # 每个片段的字符数
            chunk_overlap=200,    # 重叠字符数,保持上下文连贯
            length_function=len,
        )
        
        splits = text_splitter.split_documents(all_docs)
        print(f"切分为 {len(splits)} 个文本片段")
        
        # 3. 向量 向量化模型(本地)
        embeddings = HuggingFaceEmbeddings(
            model_name="sentence-transformers/all-MiniLM-L6-v2"  # 轻量且效果好
        )
        
        # 4. 创建向量数据库
        self.vectorstore = Chroma.from_documents(
            documents=splits, 
            embedding=embeddings,
            persist_directory="./chroma_db"  # 向量数据库持久化目录
        )
        
        return self
    
    def query(self, question):
        """查询知识库"""
        if not self.vectorstore:
            raise ValueError("请先初始化知识库")
            
        # 5. 创建检索链
        qa_chain = RetrievalQA.from_chain_type(
            llm=Ollama(model="qwen:7b"),  # 本地LLM,或使用Coze API
            chain_type="stuff",  # 还有其他方式:map_reduce, refine等
            retriever=self.vectorstore.as_retriever(
                search_type="similarity",  # 相似度搜索
                search_kwargs={"k": 4}    # 返回最相关的4个片段
            ),
            return_source_documents=True
        )
        
        result = qa_chain({"query": question})
        return result

# 使用示例
if __name__ == "__main__":
    # 初始化
    qa_system_system = DocumentQASystem("/path/to/your/documents")
    qa_system.initialize_knowledge_base()
    
    # 查询
    answer = qa_system.query("你们公司的产品有什么特色?")
    print(answer["result"])
    
    # 查看来源文档
    for doc in answer["source_documents"]:
        print(f"来源: {doc.metadata['source']}, 页码: {doc.metadata.get('page', 'N/A')}")

2. 基于 LlamaIndex 的实现

from llama_index import VectorStoreIndex, SimpleDirectoryReader, ServiceContext
from llama_index.embeddings import HuggingFaceEmbedding
from llama_index.llms import Ollama

def setup_llamaindex_knowledgebase(doc_path):
    """使用LlamaIndex设置知识库"""
    
    # 1. 加载文档
    documents = SimpleDirectoryReader(doc_path).load_data()
    
    # 2. 配置服务和LLM
    embed_model = HuggingFaceEmbedding(
        model_name="BAAI/bge-small-zh-v1.5"  # 中文优化的向量模型
    )
    
    llm = Ollama(model="qwen:7b")
    
    service_context = ServiceContext.from_defaults(
        llm=llm,
        embed_model=embed_model,
        chunk_size=1024
    )
    
    # 3. 创建索引
    index = VectorStoreIndex.from_documents(
        documents, 
        service_context=service_context
    )
    
    # 4. 创建查询引擎
    query_engine = index.as_query_engine(
        similarity_top_k=5,
        response_mode="compact"
    )
    
    return query_engine

# 使用
query_engine = setup_llamaindex_knowledgebase("/path/to/your/documents")
response = query_engine.query("介绍一下产品的主要功能")
print(response)

3、AI agent的实现原理

AI Agent = LLM + 推理能力 + 工具使用 + 记忆机制

与传统聊天机器人不同,Agent 具有自主性、目标导向和环境交互能力。

总结:
AI Agent的核心原理是将大语言模型从一个单纯的文本生成器升级为具备自主感知、规划、行动、反思能力的智能体。关键在于:

  1. 推理链路的明确化 - 让思考过程可见可控
  2. 工具的扩展性 - 突破纯文本的限制
  3. 记忆的持久化 - 积累经验和知识
  4. 决策的层次化 - 从战略规划到战术执行

这种架构使得AI能够处理远超单次对话范围的复杂任务,真正成为人类的智能伙伴。

待继续完善。。。。。。

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bst@微胖子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值