Haystack

在这里插入图片描述


关于 Haystack


其他文章/教程等:


Haystack是 deepset 的开源Python框架,用于构建具有大型语言模型(LLM)的自定义应用程序。
它可以让您快速试用自然语言处理(NLP)中的最新模型,同时具有灵活性和易用性。

Haystack为开发 使用LLM(如GPT-4、Falcon等)和Transformer模型的最先进的NLP系统提供了全面的工具。
使用Haystack,您可以毫不费力地尝试托管在 Hugging Face、OpenAI、Cohere等平台上的各种模型,甚至部署在SageMaker 和本地模型上的模型,以找到最适合您用例的模型。

在这里插入图片描述


您可以构建的一些示例包括:

  • 对任何语言的大量文档进行语义搜索
  • 在包含混合类型信息(图像、文本和表格)的知识库上进行生成式问答
  • 自然语言聊天机器人由GPT-4等尖端生成模型提供支持
  • 一个基于LLM的Haystack 代理 ,能够解决复杂的查询
  • 从文档中提取信息 以填充数据库或构建知识图

这只是Haystack中可以创建的系统的一小部分。


提供 NLP项目所有阶段的功能

一个成功的NLP项目需要的不仅仅是语言模型。
作为一个端到端的框架,Haystack帮助您构建系统的每一步,为NLP项目生命周期的每个阶段提供工具:


但这还不是全部:元数据过滤模型蒸馏,或者提示中枢,无论你的NLP内心渴望什么,你都可能在Haystack中找到它。如果没有呢?我们会一起建造它。

在这里插入图片描述


Building blocks

Haystack使用一些简单但有效的概念来帮助您构建功能齐全、可定制的端到端NLP系统。


组件 Components

Haystack的核心是其组件——可以执行文档检索、文本生成或摘要等任务的基本构建块。单个组件已经相当强大了。它可以管理本地语言模型或通过API与宿主模型通信。

虽然Haystack提供了一系列可以开箱即用的组件,但它也允许您创建自己的自定义组件。探索包含我们社区开发的自定义组件的 集成集合,您可以自由使用这些组件。

您可以将组件链接在一起以构建管道,这是Haystack中NLP应用程序架构的基础。


管道 Pipelines

管道是由组件组成的强大结构,如Retriever和Reader,连接到基础设施构建块,如DocumentStore(例如Elasticsearch或Weaviate),以形成复杂的系统。

Haystack为大多数常见任务提供了现成的管道,如问答、文档检索或摘要。但是,为比问答更复杂的NLP场景设计和创建自定义管道同样容易。


代理 Agents

Haystack Agent使用大型语言模型来解决复杂的任务。
初始化Agent时,您会为其提供一组工具,这些工具可以是管道组件,也可以是整个管道。
Agent可以反复使用这些工具来得出答案。当给定查询时,Agent会确定哪些工具对回答此查询有用,并循环调用它们,直到得到答案。通过这种方式,它可以实现比提取式或生成式问答管道多得多的功能。

在这里插入图片描述


基本使用 - RAG

安装

pip install haystack-ai

以下代码将把您的数据加载到文档存储,构建RAG管道,并根据数据提出问题。
您只需要一个OpenAI键作为环境变量OpenAI_API_key,就可以让这个代码片段工作。

import os
from haystack import Pipeline, Document
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
from haystack.components.generators import OpenAIGenerator
from haystack.components.builders.answer_builder import AnswerBuilder
from haystack.components.builders.prompt_builder import PromptBuilder

# Set the environment variable OPENAI_API_KEY
os.environ['OPENAI_API_KEY'] = "Your OpenAI API Key"

# Write documents to InMemoryDocumentStore
document_store = InMemoryDocumentStore()
document_store.write_documents([
    Document(content="My name is Jean and I live in Paris."), 
    Document(content="My name is Mark and I live in Berlin."), 
    Document(content="My name is Giorgio and I live in Rome.")
])

# Build a RAG pipeline
prompt_template = """
Given these documents, answer the question.
Documents:
{% for doc in documents %}
    {{ doc.content }}
{% endfor %}
Question: {{question}}
Answer:
"""

retriever = InMemoryBM25Retriever(document_store=document_store)
prompt_builder = PromptBuilder(template=prompt_template)
llm = OpenAIGenerator()

rag_pipeline = Pipeline()
rag_pipeline.add_component("retriever", retriever)
rag_pipeline.add_component("prompt_builder", prompt_builder)
rag_pipeline.add_component("llm", llm)
rag_pipeline.connect("retriever", "prompt_builder.documents")
rag_pipeline.connect("prompt_builder", "llm")

# Ask a question
question = "Who lives in Paris?"
results = rag_pipeline.run(
    {
        "retriever": {"query": question},
        "prompt_builder": {"question": question},
    }
)

print(results["llm"]["replies"])

2024-04-22(一)

相关推荐

  1. <span style='color:red;'>Haystack</span>

    Haystack

    2024-04-26 14:36:04      17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-26 14:36:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-26 14:36:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-26 14:36:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-26 14:36:04       20 阅读

热门阅读

  1. SpringBoot集成rabbitMq

    2024-04-26 14:36:04       16 阅读
  2. python的练习

    2024-04-26 14:36:04       12 阅读
  3. 多线程(74)分段锁

    2024-04-26 14:36:04       13 阅读
  4. Ubuntu20.04下 Django框架搭建、部署、上线项目

    2024-04-26 14:36:04       14 阅读
  5. 一文掌握python面向对象魔术方法(二)

    2024-04-26 14:36:04       13 阅读
  6. C++ 中容器的种类

    2024-04-26 14:36:04       14 阅读
  7. 静态网卡配置centos、kali、ubantu

    2024-04-26 14:36:04       12 阅读
  8. PostCSS概述

    2024-04-26 14:36:04       14 阅读