# 导入相关的包
import logging
import sys
import torch
from llama_index.core import PromptTemplate, Settings, SimpleDirectoryReader, VectorStoreIndex, load_index_from_storage, StorageContext, QueryBundle
from llama_index.core.schema import MetadataMode
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.llms.huggingface import HuggingFaceLLM
from llama_index.core.node_parser import SentenceSplitter
# 定义日志配置
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
# 定义system prompt
SYSTEM_PROMPT = """You are a helpful AI assistant."""
query_wrapper_prompt = PromptTemplate(
"[INST]<<SYS>>\n" + SYSTEM_PROMPT + "<</SYS>>\n\n{query_str}[/INST] "
)
# 使用 llama_index_llms_huggingface 调用本地大模型
from transformers import BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(
load_in_4bit = True,
bnb_4bit_quant_type = "nf4",
bnb_4bit_use_double_quant = True, # 启用嵌套量化,在第一轮量化之后会进行第二轮量化,为每个参数额外节省 0.4 比特
bnb_4bit_compute_dtype = torch.bfloat16, # 更改量化模型的计算数据类型来加速训练
)
Settings.llm = HuggingFaceLLM(
context_window = 4096,
max_new_tokens = 2048,
generate_kwargs = {"temperature": 0.0, "do_sample": False},
query_wrapper_prompt = query_wrapper_prompt,
tokenizer_name = "/home/shuoxing/Models/Qwen/Qwen1.5-7B-Chat",
model_name = "/home/shuoxing/Models/Qwen/Qwen1.5-7B-Chat",
device_map = "auto", #"auto","balanced","balanced_low_0","sequential"
model_kwargs = {
"trust_remote_code":True,
"quantization_config": quantization_config
}
)
# 使用 llama_index_embeddings_huggingface 调用本地 embedding 模型
Settings.embed_model = HuggingFaceEmbedding(
model_name="/home/shuoxing/Models/BAAI/bge-large-zh-v1.5"
)
# 读取文档
documents = SimpleDirectoryReader("./data", required_exts=[".txt"]).load_data()
# 对文档进行切分,将切分后的片段转化为embedding向量,构建向量索引
index = VectorStoreIndex.from_documents(documents, transformations=[SentenceSplitter(chunk_size=512)])
# 将embedding向量和向量索引存储到文件中
# ./doc_emb 是存储路径
index.storage_context.persist(persist_dir='./doc_emb')
# 从存储文件中读取embedding向量和向量索引
storage_context = StorageContext.from_defaults(persist_dir="./doc_emb")
# 根据存储的embedding向量和向量索引重新构建检索索引
index = load_index_from_storage(storage_context)
# 构建查询引擎
query_engine = index.as_query_engine(streaming=True, similarity_top_k=5)
# 获取我们抽取出的相似度 top 5 的片段
contexts = query_engine.retrieve(QueryBundle("如何将流程存为文档?"))
print('-' * 10 + 'ref' + '-' * 10)
for i, context in enumerate(contexts):
print('#' * 10 + f'chunk {i} start' + '#' * 10)
content = context.node.get_content(metadata_mode=MetadataMode.LLM)
print(content)
print('#' * 10 + f'chunk {i} end' + '#' * 10)
print('-' * 10 + 'ref' + '-' * 10)
# 查询获得答案
response = query_engine.query("如何将流程存为文档?")
response.print_response_stream()
print()
/home/shuoxing/.conda/envs/RAG/bin/python /home/shuoxing/PycharmProjects/RAG/RAG.py
INFO:accelerate.utils.modeling:Based on the current allocation process, no modules could be assigned to the following devices due to insufficient memory:
- 0: 777912320.0 bytes required
These minimum requirements are specific to this allocation attempt and may vary. Consider increasing the available memory for these devices to at least the specified minimum, or adjusting the model config.
Based on the current allocation process, no modules could be assigned to the following devices due to insufficient memory:
- 0: 777912320.0 bytes required
These minimum requirements are specific to this allocation attempt and may vary. Consider increasing the available memory for these devices to at least the specified minimum, or adjusting the model config.
INFO:sentence_transformers.SentenceTransformer:Load pretrained SentenceTransformer: /home/shuoxing/Models/BAAI/bge-large-zh-v1.5
Load pretrained SentenceTransformer: /home/shuoxing/Models/BAAI/bge-large-zh-v1.5
Loading llama_index.core.storage.kvstore.simple_kvstore from ./doc_emb/docstore.json.
Loading llama_index.core.storage.kvstore.simple_kvstore from ./doc_emb/index_store.json.
INFO:llama_index.core.indices.loading:Loading all indices.
Loading all indices.
----------ref----------
##########chunk 0 start##########
file_path: /home/shuoxing/PycharmProjects/RAG/data/泛微协同办公平台E-cology9.0版本前端使用手册(C)--流程_20250331204359.txt
强制归档:具有权限的人在如图 C8-1-2 所示页面中点击鼠标覆上列表行显示的
【强制归档】按钮,即可将该流程归档。
强制收回:具有权限的人在如图 C8-1-2 所示页面中点击鼠标覆上列表行显示的
【强制收回】按钮,即可将该流程收回。
流程干预:具有权限的人在如图 C8-1-2 所示页面中点击鼠标覆上列表行显示的
【流程干预】按钮,即可打开流程进行干预操作。
第 9 章 流程存为文档
一、概述
流程存为文档页面用于前端有权限的用户将流程存为文档。
二、C9-1-流程存为文档
有“流程保存为文档”权限的用户从前端应用中心可进入【流程】-【流程存为文档】 页面,进入后页面如图 C9-1-1 所示:
C9-1-1
默认显示流程查询条件,输入条件后点击【搜索】可根据输入条件搜索出对应的结 果,点击【重置】可将输入的条件清空。不输入条件搜索则所示所有可以存为文档 的流程(后端【路径设置】-【高级设置】-【流程存为文档】中设置了“文档存放
路径”的流程路径下的流程)。
##########chunk 0 end##########
##########chunk 1 start##########
file_path: /home/shuoxing/PycharmProjects/RAG/data/泛微协同办公平台E-cology9.0版本前端使用手册(C)--流程_20250331204359.txt
二、C9-1-流程存为文档
有“流程保存为文档”权限的用户从前端应用中心可进入【流程】-【流程存为文档】 页面,进入后页面如图 C9-1-1 所示:
C9-1-1
默认显示流程查询条件,输入条件后点击【搜索】可根据输入条件搜索出对应的结 果,点击【重置】可将输入的条件清空。不输入条件搜索则所示所有可以存为文档 的流程(后端【路径设置】-【高级设置】-【流程存为文档】中设置了“文档存放
路径”的流程路径下的流程)。
在图 C9-1-1 所示操作界面中点击【搜索】,跳转的页面如图 C9-1-2 所示:
C9-1-2
勾选流程列表中的记录,点击【批量存为文档】,可将所选流程存为文档。
流程存为文档后可在文档模块找到保存的文档。如后端【路径设置】-【高级设置】
-【流程存为文档】中没有设置“文档所有者”,则存为文档的所有者默认为系统管 理员。
##########chunk 1 end##########
##########chunk 2 start##########
file_path: /home/shuoxing/PycharmProjects/RAG/data/泛微协同办公平台E-cology9.0版本前端使用手册(C)--流程_20250331204359.txt
在图 C9-1-1 所示操作界面中点击【搜索】,跳转的页面如图 C9-1-2 所示:
C9-1-2
勾选流程列表中的记录,点击【批量存为文档】,可将所选流程存为文档。
流程存为文档后可在文档模块找到保存的文档。如后端【路径设置】-【高级设置】
-【流程存为文档】中没有设置“文档所有者”,则存为文档的所有者默认为系统管 理员。
被存为文档流程可以在文档目录中找到,如图 C9-1-3 所示,打开文档后,流程内容以附件的形式存放在文档中,用户查看附件如图 C9-1-4 所示,看到的就是以文档形式展现的流程内容,这样做的好处是文档可以进行共享的,而不象流程为了给没有参与流程的用户看 必需通过转发方式,而且可以控制是否在转为文档的时候展现签字意见。
C9-1-3
C9-1-4
第 10 章 流程回收站
一、概述
用户和管理员删除流程后,希望能够找回这个被删除的流程,可以通过流程回收站进行 找回。
##########chunk 2 end##########
##########chunk 3 start##########
file_path: /home/shuoxing/PycharmProjects/RAG/data/泛微协同办公平台E-cology9.0版本前端使用手册(C)--流程_20250331204359.txt
二、C8-1-功能说明
点击前端菜单【流程】--【流程监控】,打开如图 C8-1-1 所示的页面:
C8-1-1
输入查询条件,点击【搜索】,列表中会显示符合条件的流程,如图 C8-1-2 所示:
C8-1-2
默认展现【全部】标签页。
可选标签页有【今天】、【本周】、【本月】、【本季】、【本年】,可选择监控各时间段 的流程。
鼠标覆上列表行显示有权限的监控操作。
批量删除:具有权限的人在如图 C8-1-2 所示页面中选择需要从系统中删除的流程
(勾选流程前的 Check 框即可),点击右上角的【批量删除】按钮,在出现的确认删除提示框中点击“确定”按钮即可删除所选的流程。
删除:具有权限的人在图 C8-1-2 所示页面中点击鼠标覆上流程列表行显示的【删除】按钮,在出现的确认删除提示框中点击“确定”按钮即可删除所选的流程。
批量强制归档:具有权限的人在如图 1 所示页面中选择需要强制归档的流程(勾选流程前的 Check 框即可),点击右上角的【强制归档】按钮,即可将工作流批量归档。
##########chunk 3 end##########
##########chunk 4 start##########
file_path: /home/shuoxing/PycharmProjects/RAG/data/泛微协同办公平台E-cology9.0版本前端使用手册(C)--流程_20250331204359.txt
7.2.2 、打印标记
在图 C7-1-2 所示页面除批量打印按钮外,还有【设为已打印】和【设为未打印】两个菜单,批量打印过的流程会变为已打印,也可以自定义为已打印或未打印,方便用户在批量 打印时选择需要打印的流程。
C7-1-3
第 8 章 流程监控
一、概述
具有工作流维护权限的人员才能够进入到流程监控页面,在这个页面将列出系统中当前用户有权限监控的所有工作流,主要用于将某些流程从系统中删除、以及流程的强制收回、 流程的强制归档、以及对流程的干预。
二、C8-1-功能说明
点击前端菜单【流程】--【流程监控】,打开如图 C8-1-1 所示的页面:
C8-1-1
输入查询条件,点击【搜索】,列表中会显示符合条件的流程,如图 C8-1-2 所示:
C8-1-2
默认展现【全部】标签页。
可选标签页有【今天】、【本周】、【本月】、【本季】、【本年】,可选择监控各时间段 的流程。
鼠标覆上列表行显示有权限的监控操作。
##########chunk 4 end##########
----------ref----------
The following generation flags are not valid and may be ignored: ['temperature', 'top_p']. Set `TRANSFORMERS_VERBOSITY=info` for more details.