向量数据库作为一种新兴的数据存储和检索技术,近年来受到了广泛关注。它能够高效地存储和查询高维向量数据,这使得在文本相似性搜索、推荐系统、图像检索等领域有着广泛的应用前景。
在使用向量数据库进行语义检索之前,文本是怎么一步步变成存储在向量数据库中代表语义信息的向量呢?主要有以下的几个步骤

当处理较长的文本时,直接进行 embedding 可能会遇到以下问题:
因此,我们需要将长文本分割成更小的块(chunk)。 一个简单的 chunking 方法是按照固定的字符长度进行分割。
def simple_chunk(text, chunk_size=28):
"""
简单分块方法:按固定字符长度分割文本。
"""
chunks = [text[i:i + chunk_size] for i in range(0, len(text), chunk_size)]
return chunks
text = "This is an example sentence Each sentence is converted"
chunks = simple_chunk(text)
print(chunks)
但是这样会导致切分出来的chunk语义不完整等问题,可以按照下面的方案继续优化:
nltk 或 spaCy 等 NLP 工具库进行句子分割。这部分推荐阅读这篇文章:https://github.com/FullStackRetrieval-com/RetrievalTutorials/blob/main/tutorials/LevelsOfTextSplitting/5_Levels_Of_Text_Splitting.ipynb