公司招人去哪个网站博客网站模板
2026/4/8 20:58:06 网站建设 项目流程
公司招人去哪个网站,博客网站模板,天津非常好的网站建设,阿里云网站空间在大语言模型#xff08;LLM#xff09;快速发展的今天#xff0c;如何让模型基于我们自己的私有知识进行准确回答#xff0c;成为了一个关键问题。检索增强生成#xff08;Retrieval-Augmented Generation, RAG#xff09;正是解决这一问题的有效范式。本文将通过一段完…在大语言模型LLM快速发展的今天如何让模型基于我们自己的私有知识进行准确回答成为了一个关键问题。检索增强生成Retrieval-Augmented Generation, RAG正是解决这一问题的有效范式。本文将通过一段完整的 Python 代码带你使用LangChain框架构建一个本地 RAG 系统并借此介绍 LLM 应用开发中的核心组件——虽然标题提到“LLMIndex”但实际在 LangChain 生态中我们更常使用 FAISS、Chroma 等向量数据库来实现类似功能注LLMIndex 是 LlamaIndex 项目的核心概念而本文使用的是 LangChain。说明本文示例基于LangChain 本地运行的 Qwen 模型通过http://127.0.0.1:1234/v1提供 OpenAI 兼容 API适合希望在本地部署私有知识问答系统的开发者。一、准备工作pipinstalllangchain langchain-community langchain-openai python-dotenv faiss-cpu同时你需要一个本地运行的大模型服务如 LM Studio、Ollama 或 vLLM并开启 OpenAI 兼容 API端口 1234。一份名为knowledge.txt的文本知识库文件UTF-8 编码。在.env文件中配置OPENAI_API_KEY即使使用本地模型LangChain 仍要求提供 API Key可设为任意字符串如sk-local。二、代码解析构建 RAG 流程1. 加载环境变量与文档load_dotenv()api_keyos.getenv(OPENAI_API_KEY)loaderTextLoader(knowledge.txt,encodingutf-8)documentsloader.load()这里我们使用TextLoader读取本地知识文件。LangChain 支持多种格式PDF、Word、网页等可根据需求替换加载器。2. 文本分块Chunkingtext_splitterRecursiveCharacterTextSplitter(chunk_size300,chunk_overlap50)textstext_splitter.split_documents(documents)由于 LLM 有上下文长度限制需将长文档切分为小段。RecursiveCharacterTextSplitter按字符递归分割保留语义连贯性chunk_overlap避免信息割裂。3. 向量化与向量存储embeddingsOpenAIEmbeddings(modeltext-embedding-qwen3-embedding-0.6b,api_keyapi_key,base_urlhttp://127.0.0.1:1234/v1)vectorstoreFAISS.from_documents(texts,embeddings)关键点来了我们使用本地嵌入模型如 Qwen Embedding将文本转换为向量并存入FAISSFacebook 开源的高效相似性搜索库。这一步相当于构建了“知识索引”——类似于 LlamaIndex 中的VectorStoreIndex。4. 配置本地大语言模型llmChatOpenAI(modelqwen2.5-7b-instruct-1m,api_keyapi_key,base_urlhttp://127.0.0.1:1234/v1)通过 OpenAI 兼容接口调用本地 Qwen 模型无需联网保障数据隐私。5. 构建 RAG 链retrievervectorstore.as_retriever(search_kwargs{k:3})template使用以下上下文片段来回答问题。 如果你不知道答案就说你不知道不要编造答案。 {context} 问题: {question} 有用的回答:promptChatPromptTemplate.from_template(template)defformat_docs(docs):return\n\n.join(doc.page_contentfordocindocs)qa_chain({context:retriever|format_docs,question:RunnablePassthrough()}|prompt|llm|StrOutputParser())这是 LangChain 的精髓声明式链式编程。retriever从向量库中找出最相关的 3 个文本块format_docs将检索结果拼接成字符串prompt注入上下文和问题llm生成答案StrOutputParser提取纯文本。整个流程清晰、模块化易于调试和扩展。6. 提问与输出queryLangChain 支持哪些功能resultqa_chain.invoke(query)print(问题,query)print(回答,result)系统会自动检索knowledge.txt中相关内容并基于上下文生成精准回答。三、为什么不用 LlamaIndex你可能会问既然提到了 “LLMIndex”为什么不直接用 LlamaIndexLlamaIndex更专注于数据索引与查询优化适合复杂知识图谱、多模态索引等场景LangChain则是一个通用 LLM 应用框架强调链式组合、工具集成如 Agent、Memory。两者并非互斥甚至可以结合使用。但在简单 RAG 场景下LangChain FAISS 已足够高效。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询