Open zhangzhili1112 opened 2 months ago
`response中有“\n”,总是会将内容分割`
def process_response(self, output, history):
content = ""
history = deepcopy(history)
for response in output.split("<|assistant|>"):
if "\n" in response:
metadata, content = response.split("\n", maxsplit=1)
else:
metadata, content = "", response
if not metadata.strip():
content = content.strip()
history.append({"role": "assistant", "metadata": metadata, "content": content})
content = content.replace("[[训练时间]]", "2023年")
else:
history.append({"role": "assistant", "metadata": metadata, "content": content})
if history[0]["role"] == "system" and "tools" in history[0]:
parameters = json.loads(content)
content = {"name": metadata.strip(), "parameters": parameters}
else:
content = {"name": metadata.strip(), "content": content}
return content, history
[引用] [[citation:1]]
[[citation:2]]
2. 配置Embedding API Key
本项目使用智谱开放平台的Embedding API实现向量化功能,请先注册并获取API Key。
并在
models/embedding.py
中配置API Key。详情可参考 https://open.bigmodel.cn/dev/api#text_embedding
3. 生成向量数据
[[citation:4]]
问:这个项目如何实现文件向量化 为什么输出response是list而不是str,结果如下 {'name': '这个项目通过以下步骤实现文件向量化:', 'content': '\n1. 首先,项目会根据给定的参数(如
batch_size
和chunk_size
)将文件切分成多个块(chunks)。这是通过split_into_chunks
函数实现的,该函数会根据给定的块大小和重叠大小将文件切分成多个块[[citation:3]]。\n\n2. 然后,项目会初始化一个向量存储(vector store)。这个向量存储使用FAISS库,这是一个用于高效相似度搜索和聚类的大型N维向量索引库。向量存储的初始化包括指定嵌入函数(embedding function)、索引(index)和文档存储(docstore)[[citation:3]]。\n\n3. 接下来,项目会使用vector_store.add_documents
方法将切分好的文件块添加到向量存储中。这个方法会调用嵌入函数将每个文件块转换成向量,然后将这些向量添加到向量存储中[[citation:1]]。\n\n4. 最后,项目会将向量存储保存到本地文件系统中。这是通过vector_store.save_local
方法实现的,该方法会将向量存储保存到指定的输出路径中[[citation:1]]。\n\n总的来说,这个项目通过将文件切分成块,然后将每个块转换成向量,并将这些向量存储到向量存储中,从而实现了文件向量化。'}