| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- 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)
|