跳转到主要内容

包含与检索增强生成相关的Azure机器学习和开源互操作性工具。

项目描述

AzureML 检索增强生成工具

该包目前处于alpha阶段,使用时可能存在破坏性更改和不稳定行为的风险。

它包含以下工具:

  • 将文本文档处理成适合用于LLM提示的块,包括源url等元数据。
  • 使用OpenAI或HuggingFace嵌入模型对块进行嵌入,包括更新一组随时间更新的嵌入的能力。
  • 从嵌入创建MLIndex工件,一个yaml文件,捕获在langchain中使用不同类型的向量索引所需的元数据。支持的索引类型包括
    • FAISS索引(通过langchain)
    • Azure认知搜索索引
    • Pinecone索引
    • Milvus索引
    • Azure Cosmos Mongo vCore索引
    • MongoDB

入门

您可以使用pip安装AzureML的RAG包。

pip install azureml-rag

根据预期用途,您可能还想包括各种额外的安装

  • faiss:当使用基于FAISS的向量索引时
  • cognitive_search:当使用Azure认知搜索索引时
  • pinecone:当使用 Pinecone 索引时
  • azure_cosmos_mongo_vcore:当使用 Azure Cosmos Mongo vCore 索引时
  • hugging_face:当使用 HuggingFace 的 Sentence Transformer 嵌入模型(本地推理)时
  • document_parsing:当本地解析和分块文档以放入索引时
  • mongodb:当使用原生 mongo db 索引时

MLIndex

MLIndex 文件描述了数据 + 嵌入的索引以及用于 yaml 中的嵌入模型。

Azure 认知搜索索引

embeddings:
  dimension: 768
  kind: hugging_face
  model: sentence-transformers/all-mpnet-base-v2
  schema_version: '2'
index:
  api_version: 2021-04-30-Preview
  connection:
    id: /subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace>/connections/<acs_connection_name>
  connection_type: workspace_connection
  endpoint: https://<acs_name>.search.windows.net
  engine: azure-sdk
  field_mapping:
    content: content
    filename: filepath
    metadata: meta_json_string
    title: title
    url: url
    embedding: contentVector
  index: azureml-rag-test-206e03b6-3880-407b-9bc4-c0a1162d6c70
  kind: acs

Pinecone 索引

embeddings:
  dimension: 768
  kind: hugging_face
  model: sentence-transformers/all-mpnet-base-v2
  schema_version: '2'
index:
  connection:
    id: /subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace>/connections/<pinecone_connection_name>
  connection_type: workspace_connection
  engine: pinecone-sdk
  field_mapping:
    content: content
    filename: filepath
    metadata: metadata_json_string
    title: title
    url: url
  index: azureml-rag-test-206e03b6-3880-407b-9bc4-c0a1162d6c70
  kind: pinecone

Azure Cosmos Mongo vCore 索引

embeddings:
  dimension: 768
  kind: hugging_face
  model: sentence-transformers/all-mpnet-base-v2
  schema_version: '2'
index:
  connection:
    id: /subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace>/connections/<cosmos_connection_name>
  connection_type: workspace_connection
  engine: pymongo-sdk
  field_mapping:
    content: content
    filename: filepath
    metadata: metadata_json_string
    title: title
    url: url
    embedding: contentVector
  database: azureml-rag-test-db
  collection: azureml-rag-test-collection
  index: azureml-rag-test-206e03b6-3880-407b-9bc4-c0a1162d6c70
  kind: azure_cosmos_mongo_vcore

创建 MLIndex

在此处提供使用 MLIndex 远程与 AzureML 以及本地与 langchain 一起使用的示例:https://github.com/Azure/azureml-examples/tree/main/sdk/python/generative-ai/rag

消费 MLIndex

from azureml.rag.mlindex import MLIndex

retriever = MLIndex(uri_to_folder_with_mlindex).as_langchain_retriever()
retriever.get_relevant_documents('What is an AzureML Compute Instance?')

变更日志

请将变更日志插入“下一版本”。

下一版本

0.2.36

  • 实现 mongodb 向量存储和 ml 索引支持
  • 使用 AZUREML_OBO_ENABLED 环境变量检测 OBO 凭据
  • 在更改(新增或删除)的文档上更新 ACS
  • 取消对 azure-search-documents 11.4.0 测试版的支持

0.2.35

  • 实现 cosmosdb 用于 nosql 向量存储和 ml 索引支持
  • 放宽 langchain 版本约束
  • 升级 langchain-pinecone 版本到 0.1.1 和 pinecone-client 版本

0.2.34

  • 通过引入 noneCredentialConfigure 并添加 authType 至 AadCredentialConfigure 来更新 azure-ai-ml 版本到 1.16.1
  • 在 backoff_retry_on_exceptions 中使用异常集作为 retry_exceptions

0.2.33

  • 支持现有的 qdrant 索引
  • 在流程中使用 3 个以上查找工具时减轻 PF 失败
  • 如果成功嵌入,则对嵌入器进行重试

0.2.32

  • 在 mlindex 中实现 langchain weaviate vectorstore
  • get_connection_by_id_v2 中使用调用者指定的凭据获取连接
  • azure-ai-ml 的上限设置为 1.15.0

0.2.31.1

  • 使用 azure-search-documents 11.4.0 更新搜索索引
  • 在依赖列表中添加 azureml-core

0.2.31

  • 将用户错误和系统错误分类,并相应地更新 RH 以在日志中显示
  • 使用 obo 凭据修复 AAD 连接的 bug。
  • 预防修复以支持 Connection 对象中的 AadCredentialConfig
  • 更新 Pinecone 旧版 API
  • 使用 azure-search-documents 11.4.0 创建图像嵌入索引

0.2.30.2

  • 修复 bug,从 EmbeddingContainer 元数据中删除 azure_ad_token_provider
  • 将 embeddings_model 设置为可选参数

0.2.30.1

  • 引入 elasticsearch 附加组件以在使用 Elasticsearch 索引时声明对 elasticsearch 包的传递依赖

0.2.30

  • 在 models.py 中修复处理空部署名称的 bug。
  • 支持现有的 elasticsearch 索引
  • 修复 crack_and_chunk_and_embed_and_index 中的 bug
  • 修复使用 AAD 认证类型 ACS 连接时的 bug。

0.2.29.2

  • 修复使用 azure-search-documents 11.4.0 的 ACS 索引创建失败

0.2.29.1

  • 修复 FAISS、dependable_faiss_import 在 Langchain 0.1.x 中的导入失败

0.2.29

  • 支持 AOAI、ACS 连接中的 AAD 和 MSI 认证类型

0.2.28

  • 确保与 azure-ai-ml 新版本兼容
  • 升级 langchain 以支持高达 0.1

0.2.27

  • 支持 Cohere 服务器端点
  • 在同一过程中支持多个 ACS 查找,消除字段映射冲突
  • 在 get_connection_by_name_v2 中支持传递凭据以解除托管 vNet 设置的阻塞
  • 更新 crack_chunk_embed_index_and_register.py 中的 validate_deployments

0.2.26

  • 在管道中支持 .csv 和 .json 文件扩展名
  • 在 safe_mlflow_log_metric 中忽略 mlflow.exceptions.RestException
  • validate_deployments 支持 openai v1.0+
  • 移除意外的关键字参数 'engine'
  • 检查 ACS 账户是否有足够的索引配额
  • infer_deployment 支持 openai v1.0+
  • 为现有索引创建缺失字段

0.2.25

  • 使用本地缓存的编码。
  • 为 openai v1.0+ 添加 convert_to_dict()
  • 在传递给 validate_deployments.py 之前检查 index_config
  • 将单批次上传到 ACS 的文档大小限制以解决 RequestEntityTooLargeError

0.2.24.2

  • 支持 *.cognitiveservices.* 端点
  • 在使用 DocumentIntelligence 时添加 azureml-rag 特定用户代理
  • 重构更新索引任务
  • 在crack_and_chunk中支持大写文件扩展名名称
  • 修复utils中的部署导入错误
  • 在MLIndex资产中添加playgroundType标签,用于Azure AI studio playground
  • 删除可选额外包的模块级别导入的强制性

0.2.24.1

  • 修复is_florence密钥检测
  • 使用'embedding_connection_id'代替'florence_connection_id'作为参数名

0.2.24

  • 引入使用florence嵌入API的图像摄取
  • 添加dummy输出以验证deployments的正确顺序
  • 修复DeploymentNotFound错误

0.2.23.5

0.2.23.4

  • 在OpenAIEmbedder中将api_type参数改为不区分大小写
  • 修复嵌入容器路径的bug

0.2.23.3

  • 将langchain的上限设置为0.0.348

0.2.23.2

  • 让tiktoken从缓存中拉取,而不是通过出站网络调用获取编码文件
  • 添加对Azure Cosmos Mongo vCore的支持

0.2.23.1

  • 修复validate_deployments中的异常处理以支持OpenAI v1.0+

0.2.23

  • 支持OpenAI v1.0+
  • 处理Langchain 0.0.318以来的FAISS.load_local()更改
  • 处理url爬虫组件中的mailto链接
  • 添加对Milvus向量存储的支持

0.2.22

  • 在document-parsing中将pypdf的版本更新到3.17.1

0.2.21

  • 使用工作区连接标签而不是元数据,因为元数据已被弃用
  • 修复处理files_to_document_sources中的单个文件的bug

0.2.20

  • 首次介绍validate_deployments
  • 在*_and_register尝试中注册资产,从asset_uri推断目标工作区并处理多个认证选项
  • 将activity_logger移出作为第一个参数,这是一个中间步骤,因为logger也不应该是第一个参数,而应该由get_logger处理,activity_logger应该是真正可选的
  • 修改validate_deployments本身,使其接口更接近现有任务期望的输入,并可以作为函数从其他任务调用

0.2.19

  • 在MLIndex文档的index部分中引入新的path参数,针对FAISS索引,允许FAISS索引文件的路径与MLIndex文档路径不同
  • 确保对于有效的MLIndex对象,MLIndex.base_uri永远不会未定义

0.2.18.1

  • 在crack_and_chunk_and_embed_and_index中仅在嵌入之前保存元数据
  • 更新create_embeddings以返回num_embedded值
    • 这使crack_and_chunk_and_embed在未嵌入任何文档(全部重用)的情况下跳过加载EmbeddedDocument分区

0.2.18

  • 添加新的crack、chunk、embed、index到ACS的任务,并一步注册MLIndex
  • 处理openai.api_type为None

0.2.17

  • 修复加载MLIndex失败的问题。当已提供时,无需从连接获取endpoint
  • 尝试使用langchain VectorStore并回退到供应商
  • 支持`azure-search-documents==11.4.0b11`
  • 在DataIndex中添加对Pinecone的支持

0.2.16

  • 当aoai嵌入端点抛出RateLimitError时使用Retry-After

0.2.15.1

  • 修复FAISS langchain VectorStore的vendored版本,仅在文档为None时错误(而不是当Document不是确切的正确类时)

0.2.15

  • 支持使用Azure Document Intelligence服务进行PDF破解
  • crack_and_chunk_and_embed现在通过到嵌入(流式传输)拉取文档,并分批并行嵌入文档
  • 更新默认字段名称
  • 修复在crack和chunk期间写入输出时的长文件名bug

0.2.14

  • 再次修复git_clone以处理WorkspaceConnections

0.2.13

  • 修复git_clone以处理WorkspaceConnection对象和包含用户名的urls

0.2.12

  • 在读取嵌入的块时仅处理.jsonl和.csv文件

0.2.11

  • 检查模型kind和api_type的大小写
  • 确保api_version未设置得到支持,并且默认值有意义
  • 添加对Pinecone索引的支持

0.2.10

  • 修复QA生成器和连接检查的ApiType元数据

0.2.9

  • QA数据生成接受连接作为输入

0.2.8

  • 从tiktoken的使用中移除allowed_special="all",因为它将特殊标记如<|endoftext|>编码为特殊标记,而不是作为纯文本(这是当仅设置disallowed_special=()时的情况)
  • 停止截断文本以嵌入(以模型 ctx 长度)作为新的 azureml.rag.embeddings.OpenAIEmbedder 可以处理批处理和分割长文本,然后对结果进行平均,形成单个最终嵌入。
  • 放宽 tiktoken 版本范围从 ~=0.3.0<1

0.2.7

  • 如果 azure-ai-ml<1.10.0,不要尝试使用 MLClient 进行连接
  • 处理 azure-ai-ml 今天无法反序列化的自定义连接。
  • 允许将 Faiss 索引引擎传递给 MLIndex 本地
  • 直接将块传递给 write_chunks_to_jsonl

0.2.6

  • 修复 crack_and_chunk 写入 csv 内部的 jsonl 输出模式。

0.2.5

  • 确保 EmbeddingsContainer.mount_and_load 在挂载时设置 create_destination=True,如果嵌入缓存位置尚未创建。
  • 修复当 mlflow 不可用时 safe_mlflow_start_runyield None
  • 处理传递给 update_acs 任务的自定义 field_mappings

0.2.4

  • 引入 crack_and_chunk_and_embed 任务,该任务跟踪删除和重用的来源 + 文档,以实现与索引的完全同步,利用 EmbeddingsContainer 在快照之间存储此信息。
  • 恢复 workspace_connection_to_credential 函数。

0.2.3

  • 修复 git clone url 格式错误

0.2.2

  • 修复所有 langchain 分割器以使用 tiktoken,以在 airgap 友好的方式。

0.2.1

  • 引入 DataIndex 接口,用于在 AzureML 中安排 Vector Index Pipeline 并创建 MLIndex Assets
  • 将各种 langchain 组件外包,以避免对 MLIndex 内部逻辑造成破坏性更改

0.1.24.2

  • 修复所有 langchain 分割器以使用 tiktoken,以在 airgap 友好的方式。

0.1.24.1

  • 修复 MarkdownHeaderSplitter 中的 subsplitter 初始化错误
  • 支持获取基于 ACS 的 MLIndex 的 langchain 检索器,其中 embeddings.kind: none。

0.1.24

  • 如果没有活动 mlflow 运行,不要 mlflow 记录。
  • langchain>=0.0.273 升级到 azure-search-documents==11.4.0b8 后支持 langchain.vectorstores.azuresearch
  • 使用来自包的 tiktoken 编码为其他分割器类型

0.1.23.2

  • 处理传递给 MLIndex 初始化的 Path 对象。

0.1.23.1

  • 正确处理 .api.cognitive 风格的 aoai 端点。

0.1.23

  • 确保 tiktoken 编码打包在 wheel 中。

0.1.22

  • 设置环境变量以从具有缓存键的目录中拉取编码文件,以避免 tiktoken 外部网络调用。
  • 修复没有文件输入时的 mlflow 记录错误。

0.1.21

  • 修复在安装旧的 azure-search-documents 时,update_acs 任务中顶级导入失败且没有有用原因的问题。

0.1.20

  • 修复 Crack'n'Chunk 竞态条件,其中具有相同名称的文件会互相覆盖。

0.1.19

  • 各种错误修复
    • 处理 git_clone 任务中的一些格式错误的 git url。
    • 在解析 csv 失败时尝试回退。
    • 允许分块特殊标记
    • 确保 mlflow 记录不会使任务失败。
  • 更新以支持最新的 azure-search-documents==11.4.0b8

0.1.18

  • 添加 FaissAndDocStore 和 FileBasedDocStore,它们与 langchains 的 FAISS 和 InMemoryDocStore 非常相似,没有 langchain 或 pickle 依赖。默认情况下,这些工具不会使用,直到添加了对 PromptFlow 的支持。
  • azure-documents-search==11.4.0b6 锁定,因为在 11.4.0b711.4.0b8 中有破坏性更改。

0.1.17

  • 更新与 Azure 认知搜索的交互,使用最新的 azure-documents-search SDK。

0.1.16

  • 将 api_type 从 Workspace Connections 转换为小写,以满足 langchains 的区分大小写检查。

0.1.15

  • 添加对自定义加载器的支持。
  • 添加对 MLIndex.init 的日志记录,以了解 MLindex 的使用情况。

0.1.14

  • 添加对 CustomKeys 连接的支持。
  • 添加 OpenAI 对 QA Gen 和 Embeddings 的支持。

0.1.13 (2023-07-12)

  • 实现单节点非-PRS 嵌入任务,以使用户能够获得更清晰的日志。

0.1.12 (2023-06-29)

  • 修复 infer_deployment util 中的 ApiVersion、ApiType 的 casing 检查。

0.1.11 (2023-06-28)

  • 更新 workspace 连接的 ApiVersion、ApiType 的 casing 检查。
  • 对 temperature、max_tokens 进行 int 转换。

0.1.10 (2023-06-26)

  • 更新数据资产注册,使其具有可调整的 output_type
  • 从 generate_qa.py 中删除资产注册。

0.1.9 (2023-06-22)

  • 添加 azureml.rag.data_generation 模块。
  • 修复了会导致 crack_and_chunk 对包含非-utf-8 字符的文档失败的错误。目前,这些字符将被忽略。
  • 改进了 Markdown 文件中的标题提取。当 use_rcts=False 时,Markdown 文件将在标题处分割,并且每个块都将标题上下文作为前缀(例如,# 标题 1\n## 标题 2\n# 标题 3\n{内容}

0.1.8 (2023-06-21)

  • 为 azureml-insider 笔记本添加部署推断工具。

0.1.7 (2023-06-08)

  • 改进了任务(用于 RAG 管道组件)的遥测。

0.1.6 (2023-05-31)

  • 如果没有处理文件,则失败 crack_and_chunk 任务(通常是因为 input_glob 格式错误)。
  • update_acs.py 中的默认值从 False 更改为 push_embeddings=True

0.1.5 (2023-05-19)

  • 将 api_base 添加回 MLIndex 嵌入配置,以支持向后兼容(直到所有客户端开始从 Workspace Connection 获取它)。
  • 为管道组件中使用的任务添加遥测,默认情况下不适用于 SDK 使用。

0.1.4 (2023-05-17)

  • 修复了在 split_documents 上启用 rcts 选项时,使用 nltk 分割器而不是预期分割器的错误。

0.1.3 (2023-05-12)

  • 支持基于 Workspace Connection 的 Git、Azure OpenAI 和 Azure 认知搜索使用的身份验证。

0.1.2 (2023-05-05)

  • 重构了文档分块,以允许插入自定义处理逻辑。

0.0.1 (2023-04-25)

新增功能

  • 引入了包
  • langchain Retriever 用于 Azure 认知搜索

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

此版本没有可用的源分布文件。请参阅 生成分布存档的教程

构建分布

azureml_rag-0.2.36-py3-none-any.whl (1.7 MB 查看哈希值)

上传时间 Python 3

由以下支持