.01
.02
.03
{
"id":0,
"vector":[0.01,-0.03,0.15,...,-0.08],
"payload":{
"company":"AppleInc.",
"ticker":"AAPL",
"price":175.50,
"market_cap":"2.8T",
"industry":"Technology",
"pe_ratio":28.5
}
}
.04
.05
.06
importpandasaspd
fromsentence_transformersimportSentenceTransformer
#加载句子嵌入模型
encoder=SentenceTransformer('all-MiniLM-L6-v2')
#读取JSON格式的数据
df=pd.read_json('../../stock_data.json')
df=pd.json_normalize(df['stocks'])
df=df[df['company'].notna()]
data=df.to_dict('records')
fromqdrant_clientimportQdrantClient
#创建内存中的向量数据库
qdrant=QdrantClient(":memory:")
#创建集合以存储向量数据
qdrant.recreate_collection(
collection_name="top_stocks",
vectors_config=models.VectorParams(
size=encoder.get_sentence_embedding_dimension(),
distance=models.Distance.COSINE
)
)
#向量化数据并上传至向量数据库
valid_data=[docfordocindataifisinstance(doc.get("company",""),str)anddoc["company"].strip()]
qdrant.upsert(
collection_name="top_stocks",
points=[
models.PointStruct(
id=idx,
vector=encoder.encode(doc["company"]).tolist(),
payload=doc
)foridx,docinenumerate(valid_data)
]
)
#执行查询并获取相似结果
query_prompt="市值较高的科技公司"
query_vector=encoder.encode(query_prompt).tolist()
search_results=qdrant.search(
collection_name="top_stocks",
query_vector=query_vector,
limit=3,
with_payload=True
)
forresultinsearch_results:
print(f"公司:{result.payload['company']},行业:{result.payload['industry']},市值:{result.payload['market_cap']}")
fromopenaiimportOpenAI
client=OpenAI(base_url="http://127.0.0.1:8080/v1",api_key="your_api_key")
completion=client.chat.completions.create(
model="LLaMA_CPP",
messages=[
{"role":"system","content":"你是股票领域的专家,帮助用户选择股票并回答他们的问题。"},
{"role":"user","content":"NVIDIA的市值和市盈率是多少?"},
{"role":"assistant","content":str(search_results)}
]
)
print(completion.choices[0].message["content"])
.07
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |