ChatGPT + 向量数据库 + Prompt-as-Code - CVP技术栈解析 - Zilliz

作者:API传播员 · 2025-11-16 · 阅读时间:4分钟

ChatGPT由于其有限的知识库而受到限制,当被问及不熟悉的话题时,有时会导致答案产生幻觉。为了解决这一问题,我们引入了新的AI技术堆栈——ChatGPT + 向量数据库 + Prompt-as-Code,简称CVP堆栈。这一堆栈旨在克服ChatGPT在知识覆盖范围上的局限性。


CVP技术堆栈的核心原理

ChatGPT在回答自然语言查询方面表现出色。当将用户的查询与检索到的文本内容结合后,通过提示生成的方式,ChatGPT能够生成更相关且准确的响应。这种方法有效地减少了ChatGPT生成“幻觉答案”的可能性。

为了验证这一技术堆栈的实际效果,我们开发了OSS Chat作为CVP堆栈的工作演示。OSS Chat利用开源项目的GitHub存储库及其相关文档页面作为事实来源。具体实现步骤如下:

  1. 数据嵌入:将开源项目的文档数据转换为嵌入向量。
  2. 数据存储:将嵌入向量存储在Zilliz向量数据库中,同时将相关内容存储在单独的数据存储中。
  3. 相似性搜索:当用户提出问题时,触发Zilliz中的相似性搜索,找到与问题相关的匹配内容。
  4. 生成响应:将检索到的数据输入ChatGPT,生成精确且准确的回答。

ChatGPT与OSS Chat的对比示例

示例1:关于Hugging Face支持的功能

当我们向ChatGPT提问时,它承认了自身的局限性,并返回了一个准确但无用的答案(即它没有相关数据)。而使用OSS Chat,由于数据来源于Hugging Face的文档网站,我们得到了以下准确的回答:

是的,Hugging Face支持OpenAI Whisper。FlaxWhisperModel类在transformers库中可用,该库是OpenAI Whisper模型的包装器。您可以使用此类加载预训练的OpenAI Whisper模型,并将其用于各种自然语言处理任务,如文本分类、问答和文本生成。

示例2:关于PyTorch的API问题

我们向ChatGPT提问了一个关于PyTorch API的问题,结果得到了一个冗长的回答,其中提到PyTorch没有“torch.compile”API。然而,OSS Chat提供了以下准确的回答:

‘torch.compile’ API的目的是通过提前编译PyTorch代码来加速代码执行。它可以处理任意Python代码,对现有代码的更改最小,并且能够处理依赖数据的控制流。它还支持非PyTorch函数调用,而TorchScript可能会将这些调用视为常量,从而导致不正确的结果。


Milvus中的TTL设置方法

在最后一个示例中,我们探讨了如何在Milvus中设置TTL(Time-to-Live)。ChatGPT虽然提供了一个看似合理的答案,甚至包含代码片段,但实际上并未回答问题的核心内容。而OSS Chat则提供了更为准确的说明:

from milvus import Milvus, DataType
import datetime

milvus = Milvus()
collection_param = {
    "collection_name": "my_collection",
    "dimension": 128,
    "index_file_size": 1024,
    "metric_type": DataType.FLOAT_VECTOR,
}
milvus.create_collection(collection_param)

now = datetime.datetime.now()
delta = datetime.timedelta(days=7)
expiry_time = now + delta

milvus.set_collection_ttl('my_collection', expiry_time.timestamp())

partition_param = {
    "collection_name": "my_collection",
    "partition_name": "my_partition",
}
milvus.create_partition(partition_param)
milvus.set_partition_ttl('my_collection', 'my_partition', expiry_time.timestamp())

在这个示例中,我们创建了一个集合和一个分区,并分别使用set_collection_TTLset_partition_TTL方法为它们设置了7天的TTL。TTL以Unix时间戳的形式表示,即自1970年1月1日以来的秒数。需要注意的是,启用TTL功能需要在Milvus配置文件中设置TTL_CHECKINTERVAL参数,默认值为60秒。


总结

CVP技术堆栈通过结合ChatGPT、向量数据库和Prompt-as-Code的优势,显著提升了AI系统的响应准确性和实用性。通过OSS Chat的实际应用,我们可以看到这一堆栈在处理复杂查询时的潜力。未来,随着技术的进一步发展,CVP堆栈有望在更多领域中发挥重要作用。

原文链接: https://zilliz.com/blog/ChatGPT-VectorDB-Prompt-as-code