2026/1/25 6:14:41
网站建设
项目流程
邢台做移动网站费用,做弹幕网站有哪些,wordpress加速,网站制作 搜索原文#xff1a;towardsdatascience.com/how-i-built-my-first-rag-pipeline-6e178326e3c8 LLM 的幻觉甚至对像谷歌这样的科技巨头都是一个问题#xff08;只需问 Gemini 每天推荐吃多少石头……剧透一下#xff0c;是一天一个#xff09;。虽然我们仍然不知道如何教授 LLM…原文towardsdatascience.com/how-i-built-my-first-rag-pipeline-6e178326e3c8LLM 的幻觉甚至对像谷歌这样的科技巨头都是一个问题只需问 Gemini 每天推荐吃多少石头……剧透一下是一天一个。虽然我们仍然不知道如何教授 LLM 常识知识但我们能做的是为您的特定用例提供足够的上下文。这就是检索增强生成RAG发挥作用的地方在这篇文章中我将向您展示我是如何实现一个可以阅读我的简历并与招聘人员交谈的 RAG 管道**嘘如果你没有会员资格你可以在这里阅读文章这里。什么是检索增强生成RAG首先让我们打好基础确保我们理解什么是 RAG 以及它是如何工作的。简而言之检索增强生成RAG是一种技术其中 LLM 的答案生成通过从一组领域知识中检索到的额外相关信息得到增强。RAG 管道从您的私有数据中挑选出最相关的文本片段并让 LLM 在提示的同时阅读它以生成答案。例如在这篇文章中我正在构建一个裸骨聊天机器人为我回答招聘人员的问题。为了使 LLM 能够准确完成其工作我必须“告诉”它我是谁。使用 RAG 管道我可以让它检索每个招聘人员问题的最相关部分从而增强LLM 的答案生成。简单 RAG 管道的工作原理现在我们已经了解了它的工作的高层次理论让我们深入了解它的细节。这就是一个简单的 RAG 管道的样子https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/dc2cd6fa8e979fa6d215e639509c20a2.png作者提供的简单 RAG 管道图。如图中所示构建简单 RAG 管道有两个阶段数据索引数据检索和生成数据索引它从数据索引开始这意味着将文本数据转换为可搜索的向量嵌入数据库。首先在数据索引阶段文档集合被分成更小的文本片段。这样在需要时可以给 LLM 提供更小、更精确的文本片段而不是用太多信息压倒它。然后文本片段被转换为向量嵌入。向量嵌入将自然语言文本的意义编码成计算机可以读取的数字。最后向量嵌入存储在向量数据库中以便它们可以轻松搜索。数据检索和生成现在上下文数据块已存储在可搜索的数据库中数据检索和生成开始。首先用户的查询或提示被转换为一个向量嵌入就像向量数据库中的上下文数据一样。然后查询向量与向量数据库中所有上下文数据的向量进行比较以选择与用户查询最相似的顶部 k 个上下文数据块。最后用户查询和选定的上下文块被输入到 LLM 中生成答案。就是这样我是如何构建一个简单的 RAG 管道现在我们已经了解了 RAG 管道背后的理论让我们将其付诸实践这些是我们将遵循的步骤设置环境导入 LLM导入嵌入模型准备数据提示工程创建查询引擎设置环境首先我们需要导入所有必要的库。我们将使用以下库Chroma- 一个 AI 原生开源向量数据库。Chroma 将允许我们为向量嵌入创建一个向量数据库。LlamaIndex- 一个用于构建基于 LLM 的上下文增强生成式 AI 应用的框架。LlamaIndex 将处理从读取上下文数据到创建向量嵌入、创建提示模板以及在本地提示 Llama LLM 的所有事情。importchromadbfromllama_index.coreimportPromptTemplatefromllama_index.coreimportSettingsfromllama_index.coreimportSimpleDirectoryReaderfromllama_index.coreimportStorageContextfromllama_index.coreimportVectorStoreIndexfromllama_index.core.node_parserimportSentenceSplitterfromllama_index.embeddings.huggingfaceimportHuggingFaceEmbeddingfromllama_index.llms.ollamaimportOllamafromllama_index.vector_stores.chromaimportChromaVectorStore要安装这些库您可以运行以下命令pip install chromadb pip install llama-index导入 Llama LLM现在所有必要的库都已导入我们可以开始导入一个 LLM。我选择使用 Llama因为它允许我在本地运行它这意味着它是免费且私有的Ollama 库使得导入变得非常简单——只需指定您想使用的版本然后通过调用*.complete*来提示它。llmOllama(modelllama3)responsellm.complete(Who is Laurie Voss? write in 10 words)print(response)导入嵌入模型接下来我们导入一个嵌入模型它处理从文本到上下文数据和提示的向量嵌入的转换。您可以从大量嵌入模型中进行选择。我使用了来自 Hugging Face 的BAAI/bge-small-en-v1.5因为它是一个小型模型。模型越小实现速度越快但以模型的能力为代价。由于我的 RAG 管道只是一个 POC我不介意次优性能而且额外的速度提升是一个加分项。embed_modelHuggingFaceEmbedding(model_nameBAAI/bge-small-en-v1.5)Settings.llmllm Settings.embed_modelembed_model准备数据嵌入模型作为数据准备的一部分被使用。为了准备数据我们首先使用SimpleDirectoryReader读取包含上下文的文件。在这种情况下它是我一页简历的 PDF。然后我们使用Chroma创建一个向量数据库。最后我们将上下文数据作为向量嵌入存储在向量数据库中并使用VectorStoreIndex执行文本块转换。documentsSimpleDirectoryReader(input_files[./resume.pdf]).load_data()chroma_clientchromadb.EphemeralClient()chroma_collectionchroma_client.create_collection(ollama)vector_storeChromaVectorStore(chroma_collectionchroma_collection)storage_contextStorageContext.from_defaults(vector_storevector_store)indexVectorStoreIndex.from_documents(documents,storage_contextstorage_context,embed_modelembed_model,transformations[SentenceSplitter(chunk_size256,chunk_overlap10)])提示工程现在 RAG 管道的内部工作已经设置好我们编写一个模板查询为 LLM 分配任务和角色提供相关上下文并插入问题。template(Imagine you are a data scientists assistant and you answer a recruiters questions about the data scientists experience.Here is some context from the data scientists resume related to the query::n-----------------------------------------n{context_str}n-----------------------------------------nConsidering the above information, please respond to the following inquiry:nnQuestion: {query_str}nnAnswer succinctly and ensure your response is clear to someone without a data science background.The data scientists name is Diana.)qa_templatePromptTemplate(template)创建查询引擎最后我们创建一个查询引擎它组装所有的乐高积木query_engineindex.as_query_engine(text_qa_templateqa_template,similarity_top_k3)运行 RAG 管道现在让我们来到构建 AI 应用的有趣部分——看到它工作要运行 RAG 管道只需向查询引擎提出一个问题然后哇responsequery_engine.query(Do you have experience with Python?)print(response.response)Yes,I can confirm that Diana Morales has extensive experience workingwithPythonasa Data Scientist at Accenture.According to her resume,she listed Pythonasone of her core skills,indicating a strong proficiencyinthe programming language.Additionally,her projectsandachievements highlight her ability to leverage Pythonforvarious data science tasks,suchasnatural language processing(NLP),machine learning,anddata visualizations.真的很不错不是吗在我的下一篇文章中我将更深入地介绍 RAG 管道涉及更多高级主题。如果你喜欢这篇文章别忘了点赞和评论并分享你根据这篇文章构建的所有令人惊叹的 RAG 管道下次再见