You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在LlamaIndex结合Postgres(pgvector)创建向量表时添加自定义列

解决方案

完全可以实现将external_id这类字段作为Postgres表的自定义列存储,具体操作步骤如下:

1. 手动创建带自定义列的Postgres表

LlamaIndex默认生成的表结构不包含自定义列,所以需要先手动创建目标表,包含默认字段+自定义字段。执行以下SQL(替换external_id为你的实际字段,类型按需调整):

CREATE TABLE IF NOT EXISTS vectorstore (
    id TEXT PRIMARY KEY,
    external_id VARCHAR(255) NOT NULL, -- 自定义列
    embedding vector(1536) NOT NULL,
    metadata JSONB,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 创建HNSW向量索引(和你原配置的参数对应)
CREATE INDEX IF NOT EXISTS hnsw_idx_vectorstore ON vectorstore
USING hnsw (embedding vector_cosine_ops)
WITH (m = 16, ef_construction = 64);

2. 配置PGVectorStore时指定自定义列映射

修改你的PGVectorStore初始化代码,添加custom_metadata_columns和metadata_column_map参数,让LlamaIndex识别并写入自定义列:

self.vector_store = PGVectorStore.from_params(
    database=request.tenant,
    host=host,
    password=password,
    port=port,
    user=user,
    table_name="vectorstore",
    embed_dim=1536,
    hnsw_kwargs={
        "hnsw_m": 16,
        "hnsw_ef_construction": 64,
        "hnsw_ef_search": 40,
        "hnsw_dist_method": "vector_cosine_ops",
    },
    # 指定自定义列的名称和类型
    custom_metadata_columns={"external_id": "VARCHAR(255)"},
    # 映射文档metadata中的键到表的自定义列
    metadata_column_map={"external_id": "external_id"}
)

3. 处理文档的metadata

在构建Document对象时,将external_id放入metadata字典中,LlamaIndex会自动将其写入对应的自定义列,而不是塞进默认的metadata JSONB列:

from llama_index.core import Document

# 示例文档
doc = Document(
    text="你的文档内容",
    metadata={"external_id": "doc_001"} # 这里的键要和metadata_column_map中的键对应
)

4. 构建索引(保持原有逻辑即可)

继续使用VectorStoreIndex.from_documents()构建索引,此时LlamaIndex会将external_id写入自定义列,而非默认的metadata JSON结构中:

from llama_index.core import VectorStoreIndex

index = VectorStoreIndex.from_documents(
    [doc],
    vector_store=self.vector_store
)

这样操作后,你就能在Postgres的vectorstore表中看到独立的external_id列,而非嵌套在metadata的JSON里。

内容的提问来源于stack exchange,提问作者dsmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 21:45:59