Type something to search...
构建新闻代理的实用指南:使用ollama Langchain Chromadb和huggingface Embeddings实现高效问答系统

构建新闻代理的实用指南:使用ollama Langchain Chromadb和huggingface Embeddings实现高效问答系统

对话式人工智能:使用 LangChain、ChromaDB 和 Hugging Face 构建检索系统

对话式人工智能是现代人工智能技术中最引人入胜的应用之一,它将大型语言模型(LLMs)与高效的向量存储结合在一起。

在本博客中,我们将引导您设置一个管道,该管道结合了 LangChain、ChromaDB 和 Hugging Face 嵌入,以构建一个使用网页抓取文档进行检索和回答问题的系统。

在深入代码之前,请确保您已安装必要的 Python 库。您可以使用以下命令安装它们:

pip install langchain chromadb beautifulsoup4 langchain-community

此外,如果您使用 Ollama 类进行 LLM 交互,请确保您有一个正在运行的 Ollama API 实例。

本地库安装

Ollama 在本地运行,并且已经下载了 2 个模型。我将使用“llama3:8b-instruct-q6_K”进行此实验,该模型托管在本地。

Image 2

可用的 Ollama 模型

运行 ollama:

ollama run llama3:8b-instruct-q6\_K

Image 3

运行 Ollama 服务以供使用

Part 2: The Coding

Code Overview

我们正在构建的管道执行以下关键步骤:

  1. 数据加载: 从目标网站抓取文章(在本例中为BBC新闻)。
  2. 文本拆分: 将长文本拆分为可管理的块以进行嵌入。
  3. 向量化: 为文档创建嵌入并将其存储在向量数据库中(ChromaDB)。
  4. 查询与检索: 使用对话链与用户互动并检索相关信息。

Step-by-Step Breakdown

  1. 设置 ChromaDB
    首先,我们定义存储向量数据库的目录,并清理任何现有数据以重新开始:

    INDEX_PERSIST_DIRECTORY = os.getenv('INDEX_PERSIST_DIRECTORY', "./data/chromadb")
    client = Chroma(persist_directory=INDEX_PERSIST_DIRECTORY)
    collection = client.delete_collection()
    
  2. 使用 RecursiveUrlLoader 进行网页抓取
    我们使用 LangChain 的 RecursiveUrlLoader 从 BBC 网站抓取文章:

    documents = RecursiveUrlLoader(
        url="https://www.bbc.com/",
        max_depth=1,
        extractor=lambda x: Soup(x, "html.parser").find("article").text
    ).load()
    
  3. 拆分文本以提高嵌入效率
    为了避免超出大型语言模型的上下文限制,我们将抓取的文档拆分成较小的块:

    text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=50)
    documents = text_splitter.split_documents(documents)
    
  4. 创建和存储嵌入
    我们使用 Hugging Face 的 all-MiniLM-L6-v2 模型为文档块生成嵌入,并将它们存储在 ChromaDB 中:

    embeddings = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2")
    vectordb = Chroma.from_documents(
        documents=documents,
        embedding=embeddings,
        persist_directory=INDEX_PERSIST_DIRECTORY
    )
    vectordb.persist()
    
  5. 检索文档
    为了验证存储的内容,我们执行相似性搜索以检索所有文档:

    all_documents = vectordb.similarity_search(query="", k=len(documents))
    for idx, doc in enumerate(all_documents):
        print(f"Document {idx+1}:")
        print(doc.page_content[:400])
    
  6. 创建对话链
    我们使用 Ollama 大型语言模型构建一个对话链以回答用户查询:

    conversation = ConversationalRetrievalChain.from_llm(
        llm,
        retriever=vectordb.as_retriever(),
        return_source_documents=True,
        verbose=True
    )
    
  7. 回答用户查询
    最后,我们将链集成到一个函数中以处理用户问题:

    def chat(question, user_id):
        response = conversation({"question": question, "chat_history": []})
        return response['answer']
    

第三部分:关键见解和最终结果

管道展示了从数据摄取到回答用户查询的完整流程。它实现了以下目标:

  • 网页抓取:自动从网站提取数据以构建知识库。
  • 高效存储:使用 ChromaDB 高效存储和检索嵌入。
  • 对话式人工智能:采用大型语言模型根据存储数据中的相关上下文回答查询。

示例交互

一旦系统运行,您可以这样查询它:

chat("What is the current situation in Lebanon?", "user123")

系统从BBC检索相关的文章,处理内容,并提供简洁的答案。

处理问题

结论

本博客概述了一种简单的方法,将网页抓取、向量数据库和大型语言模型结合起来,以构建对话代理。

所描述的管道可以适应各种应用,包括客户支持、知识管理和内容摘要。

局限性:这高度依赖于网站及其结构,因此需要根据需求探索不同的解析方法/库。

Repo: https://github.com/RahulPant1/LLMs/blob/main/Lanchain-CHroma-Example-1.ipynb

Related Posts

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

AI 研究报告和论文写作 合并两个系统指令以获得两个模型的最佳效果 Perplexity AI 的 Deep Research 工具提供专家级的研究报告,而 OpenAI 的 ChatGPT-o3-mini-high 擅长推理。我发现你可以将它们结合起来生成令人难以置信的论文,这些论文比任何一个模型单独撰写的都要好。你只需要将这个一次性提示复制到 **

阅读更多
让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

Non members click here作为一名软件开发人员,多年来的一个发现总是让我感到惊讶,那就是人们还在 Excel

阅读更多
使用 ChatGPT 搜索网络功能的 10 种创意方法

使用 ChatGPT 搜索网络功能的 10 种创意方法

例如,提示和输出 你知道可以使用 ChatGPT 的“搜索网络”功能来完成许多任务,而不仅仅是基本的网络搜索吗? 对于那些不知道的人,ChatGPT 新的“搜索网络”功能提供实时信息。 截至撰写此帖时,该功能仅对使用 ChatGPT 4o 和 4o-mini 的付费会员开放。 ![](https://images.weserv.nl/?url=https://cdn-im

阅读更多
掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

10 个常见问题解答 本文是我推出的一个名为“10 个常见问题解答”的新系列的一部分。在本系列中,我旨在通过回答关于该主题的十个最常见问题来分解复杂的概念。我的目标是使用简单的语言和相关的类比,使这些想法易于理解。 图片来自 [Solen Feyissa](https://unsplash.com/@solenfeyissa?utm_source=medium&utm_medi

阅读更多
在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和科技这样一个动态的行业中,保持领先意味着不断提升你的技能。无论你是希望深入了解人工智能模型性能、掌握数据分析,还是希望通过人工智能转变传统领域如法律,这些课程都是你成功的捷径。以下是一个精心策划的高价值课程列表,可以助力你的职业发展,并让你始终处于创新的前沿。 1. 生成性人工智能简介课程: [生成性人工智能简介](https://genai.works

阅读更多
揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

在AI军备竞赛中分辨事实与虚构 DeepSeek AI真的是它所宣传的游戏规则改变者,还是仅仅聪明的营销和战略炒作?👀 虽然一些人将其视为AI效率的革命性飞跃,但另一些人则认为它的成功建立在借用(甚至窃取的)创新和可疑的做法之上。传言称,DeepSeek的首席执行官在疫情期间像囤积卫生纸一样囤积Nvidia芯片——这只是冰山一角。 从其声称的550万美元培训预算到使用Open

阅读更多
Type something to search...