读取文件
我这里使用的是随便找的一份 csv 文件,只是为了示范,没有什么实际的用处。需要注意的是内容中不要有特殊字符或者🤫之类的表情包,否则在处理的时候会报错,内容如下:
基本的文档处理参数如下:
chunk_overlap = 50
chunk_size = 250
embed_model = 'm3e-large'
vs_type = 'fassi'
zh_title_enhance = False
详细解释如下:
chunk_overlap = 50
:chunk_overlap
是指在进行文本分块时,每个块之间的重叠量。在处理文本时,通常将文本分成多个块以便更有效地处理,而重叠量可以确保在相邻的块之间不会丢失重要的信息。在这个例子中,重叠量为 50,表示相邻块之间会有 50 个字符的重叠。chunk_size = 250
:chunk_size
是指每个文本块的大小。将长文本分成适当大小的块有助于更高效地处理文本数据。在这里每个文本块的大小为 250 个字符。embed_model = 'm3e-large
:embed_model
是指用于文本嵌入(embedding)的模型。文本嵌入是将文本数据转换成向量的过程,通常用于表示文本数据。在这里,使用了名为m3e-large
的嵌入模型。vs_type = 'fassi'
:vs_type
是向量数据库名称。zh_title_enhance = False
:zh_title_enhance
是一个布尔值,用于指示是否要增强中文标题。当设置为True
时,表示对中文标题进行增强处理;当设置为False
时,表示不进行增强处理。
加载自定义的 Loader 处理 csv 文件
我们这里使用的是 <class 'langchain.document_loaders.csv_loader.CSVLoader'>
来处理 csv 文件内容,详细代码如下,将每一行的内容封装成给你一个 Document 类
,然后将所有行对应的 Document 添加到一个列表中即可完成对 csv 文件的内容处理,具体 Document 类
介绍如下:
Document(page_content=content, metadata=metadata)
page_content
就是每一行的内容,其实就是将当前行的列名和内容使用 “:” 进行拼接,然后将所有的列的内容用"\n"拼接而成的字符串。metadata
记录了当前所在行以及 csv 文件的路径。
我这里以前两行为例列举内容如下:
[ Document( page_content=': 0\ntitle: 加油~以及一些建议\nfile: 2023-03-31.0002\nurl: https://github.com/imClumsyPanda/langchain-ChatGLM/issues/2\ndetail: 加油,我认为你的方向是对的。\nid: 0', metadata={'source': 'D:\\Langchain-Chatchat-torch2-240402\\knowledge_base\\samples\\content\\test_files/langchain-ChatGLM_closed.csv', 'row': 0} ), Document( page_content=': 1\ntitle: 当前的运行环境是什么,windows还是Linux\nfile: 2023-04-01.0003\nurl: https://github.com/imClumsyPanda/langchain-ChatGLM/issues/3\ndetail: 当前的运行环境是什么,windows还是Linux,python是什么版本?\nid: 1', metadata={'source': 'D:\\Langchain-Chatchat-torch2-240402\\knowledge_base\\samples\\content\\test_files/langchain-ChatGLM_closed.csv', 'row': 1} ) ]
def __read_file(self, csvfile: TextIOWrapper) -> List[Document]:
docs = []
csv_reader = csv.DictReader(csvfile, **self.csv_args) # type: ignore
for i, row in enumerate(csv_reader):
try:
source = (
row[self.source_column]
if self.source_column is not None
else self.file_path
)
except KeyError:
raise ValueError(
f"Source column '{self.source_column}' not found in CSV file."
)
content = "\n".join(
f"{k.strip()}: {v.strip()}"
for k, v in row.items()
if k not in self.metadata_columns
)
metadata = {"source": source, "row": i}
for col in self.metadata_columns:
try:
metadata[col] = row[col]
except KeyError:
raise ValueError(f"Metadata column '{col}' not found in CSV file.")
doc = Document(page_content=content, metadata=metadata)
docs.append(doc)
return docs
向量化
随便找一个可以使用的向量模型,我这里使用的是 m3e-large
,另外还有找自己合适的向量数据库,我这里使用的是 fassi
,将上面处理好的 chunk 都经过向量化存入 fassi 中,后面结合大模型即可即可进行文档的问答和检索。
这里将每一行的文本都转换为一个 1024 长的向量,然后存入到 fassi 向量数据库中,下面是我查询的展示效果。通过提问,可以将文档内的内容回答出来,并且将答案的出处都标识出来。
那么,我们该如何学习大模型?
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
一、大模型全套的学习路线
学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。
L1级别:AI大模型时代的华丽登场
L2级别:AI大模型API应用开发工程
L3级别:大模型应用架构进阶实践
L4级别:大模型微调与私有化部署
一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。
以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。