ChatGPT | Word表格整体输出

 本文来自欧巴Godwin的博客 ,引用必须注明出处!

用LangChain读取Word和PDF的文字内容是好的,但如果内容包含表格则读取出来的内容完全没法看。用ChatGPT往往是做企业知识库,所以会出现一个场景,即员工想让ChatGPT讲解包含表格的内容。

要达到效果,本文的做法是:

1、用pandoc把Doc文档转为MarkDown而且是GitHub模式,是重点,因为MarkDown可以作为文本被embedding并且输出内容包含原汁原味的表格

标签

2、用"\n## "作为MarkDown文件的切割符,用TXTLoader读取MD文件并embedding

3、这里只用embedding而不用ChatGPT,本文只做整体表格输出,不做表格格单元具体分析

直接贴出Doc表格和embedding输出的MarkDown表格对比:

ChatGPT | Word表格整体输出_第1张图片

1、先贴出pandoc的命令,用pandoc把Doc转为MD文件:

pandoc -s test.docx -t gfm -o test.md

2、贴出Python源码:

import os
from langchain.embeddings import OpenAIEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Chroma

from langchain.document_loaders.pdf import PDFMinerLoader
from langchain.document_loaders import TextLoader
from langchain.document_loaders import UnstructuredMarkdownLoader

# 1、把MD文件当做TXT加载
loader = TextLoader(".\\单文件\\test.md","UTF-8")
pages = loader.load_and_split()

# 2、拆分文件
text_splitter = CharacterTextSplitter(
    separator = "\n## ",
    chunk_size = 500, #chunk_size = 1000,
    chunk_overlap = 0
)

# 切割加载的 document
split_docs = text_splitter.split_documents(pages)
print(f'documents:{len(split_docs)}')
#print("拆分后的文档:" + str(split_docs))

# 3、将文件embedding
os.environ["OPENAI_API_TYPE"] = "azure"
os.environ["OPENAI_API_KEY"] = "xxxxxxxxxxxx"
os.environ["OPENAI_API_BASE"] = "https://yyyyyyyyyyy.openai.azure.com/"
embeddings = OpenAIEmbeddings(model="text-embedding-ada-002", deployment="lk-text-embedding-ada-002", chunk_size=1)

print("开始embedding")

# 4、将拆分后的文本embeddings后存储到Vector数据库
vectordb = Chroma.from_documents(split_docs, embedding=embeddings, persist_directory="./")
vectordb.persist()

result_list=vectordb.search("岗位设置是什么",'similarity')
print(result_list[0])

3、运行代码终端输出的内容,把内容贴到txt文件另保存为.md,再上传到有道云笔记这类支持MD格式的软件即可看到上图MD格式内容:

page_content='岗位设置\n\n根据项目研发过程主要分为需求整理、项目研发、生产发布三个阶段。明确工作职责,逐步实现产品经理、项目经理、软件工程师师、测试工程师、运维工程师的岗位设置。\n\n

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
岗位工作内容责任
产品经理

1、负责分析需求、整理需求,编写需求文档。

\n

2、绘制界面原型demo等,设计功能使用的具体描述、行为者、前置条件、后置条件、UI描述、业务流程/子流程/分支流程,界面
说明等,完成大部分的前端设计,小部分的后端设计。

\n

3、对项目组成员详细讲解需求。

\n

4、项目过程中维护和跟踪需求状态。

1、对产品需求的真实
度负责。

\n

2、对产品整体风格负责。

\n

3、对项目整体设计流程负责。

\n

4、对需求的生命周期负责。

项目经理

1、选定项目组成员,成立项目组,安排任务分工。

\n

2、制定研发主计划,包括需求,设计,编码,测试这几个阶段的计划。

\n

3、评估项目研发投入的资源。

\n

4、制定项目组开发进度表, 对组内人员工作进度监控。

\n

5、对文档的质量进行检查、把关。

\n

6、组织需求评审、技术评审等会议。

1、对项目资源
有效使用负责。

\n

2、对各岗位沟通协调工作负责。

\n

3、对项目的进度负责。

\n

4、对系统总体设计、详细设计文档质量负责。

\n

5、对项目组会议质量负责。

软件工程师

1、负责把产品需求分解为研发任务。

\n

2、负责系统的模块设计。

\n

3、负责模块的代码编写、维护

\n

4、负责技术文档的编写、维护。

\n

5、负责与测试工程师的交互,处理测试工程师的问题。

\n

6、对项目组成员进行技术指导。

1、对研发任
务的有效性负责。

\n

2、对模块设计的有效性负责。

\n

3、对模块的开发效率和代码质量负责。

\n

4、对技术文档的完整性、实时性、可读性负责。

测试工程师

1、根据需求分析和系统总体设计,编写测试文档和测试用例。

\n

2、对系统的功能、性能、异常进行测试。

\n

3、编写测试报告。

\n

4、组织SIT、UAT等各类测试活动。

1、对测试的质量负责。

\n

2、对测试报告负责。

\n

3、对各类测试活动的质量负责。

运维工程师

1、保障线上环境的正常运行,处理线上的各种问题;

\n

2、监控线上系统,分析和预防线上系统出现问题;

\n

3、构建自动化运维平台,提高运维效率;

\n

4、规范运维流程,定期提交汇总报告;

\n

5、\n周期做数据备份,测试数据备份的正确性和完整性,以增强服务器的安全性。

1、对线上环境的稳定性负责。

\n

2、对服务器的安全性负责。

\n

3、对数据备份的正确性和完整性负责。

' metadata={'source': '.\\单文件\\test.md'}

你可能感兴趣的:(ChatGPT,python,ChatGPT,LangChain,表格,embedding)