from langchain_community.embeddings import DashScopeEmbeddings
from agent.config import load_config
from langchain_community.vectorstores import Chroma
import os
def get_embedding_model():
    """
    获取 Embedding 模型。

    """
    config = load_config()
    return DashScopeEmbeddings(
        model="text-embedding-v4",
        dashscope_api_key=config.api_key,  # 替换为你的 API Key
    )

def get_vectorstore(embedding_model, documents: list):
    if "./chroma_db" in os.listdir():
        db = Chroma(
            persist_directory="./chroma_db",
            embedding_function=embedding_model,
        )
    else:
        db = Chroma.from_documents(
            documents=documents,
            embedding=embedding_model,
            collection_metadata={"hnsw:space": "cosine"},
            persist_directory="./chroma_db"
        )
        db.persist()
    return db

def query_vectorstore(query: str)-> list:
    """
    查询向量数据库。

    参数:
        query (str): 用户的查询问题。

    返回:
        list: 与查询最相关的文档列表。
    """
    embedding_model = get_embedding_model()
    db = get_vectorstore(embedding_model, [])
    retriever = db.as_retriever(search_kwargs={"k": 3})
    return retriever.get_relevant_documents(query)

