包含与检索增强生成相关的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
- 弃用logging.py中的pkg_resources (https://setuptools.pypa.io/en/latest/pkg_resources.html)
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_run
为yield 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.0b7
和11.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 认知搜索
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
此版本没有可用的源分布文件。请参阅 生成分布存档的教程。
构建分布
azureml_rag-0.2.36-py3-none-any.whl (1.7 MB 查看哈希值)
关闭
azureml_rag-0.2.36-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 474c80c093f59ea0a70cf91701469c9fd6580d0aa1581162680e232ae43a1a0c |
|
MD5 | 7788bc0f88c342660b3c2ed2453c26e4 |
|
BLAKE2b-256 | f81f102125c2ad0d43e9cf68990d449249e2795af626cf36cb12d78ebcf64267 |