ๅบไบๅคๆจกๆๆททๅๆฃ็ดข็้ขๅ็ฅ่ฏๅขๅผบๆๆฏ
ๅจ่ช็ฉบ่ฝฏไปถๆต่ฏๅบๆฏไธญ๏ผๆต่ฏ็จไพ็ๆ้ซๅบฆไพ่ต้ขๅไธไธ็ฅ่ฏ๏ผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๆฃ็ดข้ถๆฎต (Retrieval) โ
โ ็นๅพๆๅ โ ็ดขๅผๆๅปบ โ ็ฒๆฃ็ดข โ ็ปๆฃ็ดข โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ่ฎญ็ป้ถๆฎต (Training) โ
โ ๅคๅซๅจ็ฝ็ป โ ๅฏนๆฏๆๅคฑ โ ็ปผๅๆๅคฑ โ ๆจกๅๅพฎ่ฐ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๆต่ฏ้ถๆฎต (Testing) โ
โ ็จไพ็ๆ โ ้ญ็ฏ่ฟญไปฃ โ ็ฅ่ฏๅบๆดๆฐ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ๅฏนๆฏไธชๅพ ๆตๅฝๆฐ $C$ ่ฟ่กๅ็ปดๅบฆ็นๅพๆๅ๏ผ
| ็นๅพ็ฑปๅ | ๆๅๆนๆณ | ่กจ็คบ็ปดๅบฆ | ไฝ็จ |
|---|---|---|---|
| ่ฏญๆณ็นๅพ | AST ่งฃๆ | 512็ปด | ็ปๆไฟกๆฏ |
| ่ฏญไน็นๅพ | BERT | 768็ปด | ่ฏญไน็่งฃ |
| ๆๆฌ็นๅพ | Word2Vec | 128็ปด | ๅฝๅๆจกๅผ |
| ๆณจ้็นๅพ | TF-IDF | 256็ปด | ๆๆกฃๅ ณ่ |
ๅ ถไธญ $\alpha + \beta + \gamma + \delta = 1$๏ผๆ้้่ฟ่ฎญ็ปๅญฆไน ใ
ๅๅฑ็ดขๅผ็ปๆ๏ผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๅๆ็ดขๅผ (็ฒๆฃ็ดข) โ
โ - ๅฟซ้่ฟๆปคๅ้้ โ
โ - O(1) ๆถ้ดๅคๆๅบฆๆฃ็ดข โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๅ้็ดขๅผ (็ปๆฃ็ดข) โ
โ - ็ฒพ็กฎ็ธไผผๅบฆ่ฎก็ฎ โ
โ - ไฝๅผฆ็ธไผผๅบฆ: similarity = cos(ฮธ) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
def hybrid_retrieve(query: Code, top_k: int = 10) -> List[KnowledgeEntry]:
# 1. ็นๅพๆๅ
features = extract_multimodal_features(query)
# 2. ็ฒๆฃ็ดข๏ผๅๆ็ดขๅผๅฟซ้่ฟๆปค
candidates = inverted_index.recall(features)
# 3. ็ปๆฃ็ดข๏ผๅ้็ธไผผๅบฆๆๅบ
scored = []
for candidate in candidates:
similarity = cosine_similarity(features, candidate.features)
scored.append((candidate, similarity))
# 4. ้ๆๅบ
scored.sort(key=lambda x: x[1], reverse=True)
return [item[0] for item in scored[:top_k]]
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๅคๅซๅจ็ฝ็ป โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ๆฅ่ฏข็นๅพ โ โโ โ ไบคๅๆณจๆๅโ โโ โ ๅทฎๅผ็นๅพๆๅๅจ โ โ
โ โ Q โ โ A(Q,K) โ โ D_ij = |Q_i - K_j| โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โ โ
โ โ ๅ้็นๅพ โ โโ โ ๅผ V โ โโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ K โ โ โ โ MLP ๅคๅซๅคด โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โ Output: Match/Not โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ๅฏนๆฏๆๅคฑ (Contrastive Loss)๏ผ \(L_{contrastive} = \sum_{i,j} y_{ij} \cdot D_{ij}^2 + (1 - y_{ij}) \cdot \max(0, m - D_{ij})^2\)
ๅ ถไธญ๏ผ
็ปผๅๆๅคฑ๏ผ \(L_{total} = \lambda_1 \cdot L_{contrastive} + \lambda_2 \cdot L_{cls}\)
| ๅคง็ฑป | ๅญๅ็ฑป | ็คบไพ | ๆต่ฏ้็น |
|---|---|---|---|
| ๆฐๆฎๅค็็ฑป | ๆฐๆฎ่ฝฌๆข | RGBโ็ฐๅบฆๅพๅ | ็ฒพๅบฆๆ ก้ช |
| ย | ๆฐๆฎ่ฎก็ฎ | ็ฉ้ตไนๆณใๅนณๅๅผ | ๆฐๅผๅ็กฎๆง |
| ย | ๆฐๆฎ็ญ้ | ๆกไปถ่ฟๆปค | ่พน็ๆกไปถ |
| ้ป่พๆงๅถ็ฑป | ๆกไปถๅคๆญ | ๅนด้พๅคๆญ | ๅๆฏ่ฆ็ |
| ย | ๅพช็ฏๆงๅถ | ่ฟญไปฃๆฑๅ | ๅพช็ฏ็ปๆญข |
| ่พๅ ฅ่พๅบ็ฑป | ่พๅ ฅๅค็ | ๅ ๅฏ่งฃๅฏ | ๅฎๅ จๆ ก้ช |
| ย | ่พๅบ็ๆ | ๆฅๅ็ๆ | ๆ ผๅผๆ ก้ช |
| ไบคไบ็ฑป | ๅ ้จไบคไบ | ๅฝๆฐ่ฐ็จ | ๆฅๅฃๅฅ็บฆ |
| ย | ๅค้จไบคไบ | ๆฐๆฎๅบๆไฝ | ไบๅกๅค็ |
KnowledgeEntry:
code_snippet: str # ไปฃ็ ็ๆฎต
test_cases: List[TestCase] # ็ธๅ
ณๆต่ฏ็จไพ
coverage_info: CoverageData # ่ฆ็ไฟกๆฏ
domain_tags: List[str] # ้ขๅๆ ็ญพ
success_rate: float # ๅๅฒๆๅ็
last_used: datetime # ๆๅไฝฟ็จๆถ้ด
# 1. ่พๅ
ฅๅพ
ๆตๅฝๆฐ
def discount_price(prices, rate=0.1):
if not 0 <= rate <= 1:
raise ValueError("rate must be between 0 and 1")
if not all(p >= 0 for p in prices):
raise ValueError("all prices must be non-negative")
return [round(p * (1 - rate), 2) for p in prices]
# 2. ้ขๅค็
preprocessed = preprocess(discount_price)
# - ไปฃ็ ๆ ผๅผๅ
# - ๅฎๅฎไน่ฟๅ
# - ๅ่ฝๆ ็ญพ: ["price", "discount", "float_round"]
# 3. ๆฃ็ดข็ธไผผๆกไพ
similar_cases = knowledge_base.retrieve(preprocessed)
# 4. ๅคๅซๅจๅคๆญ้้
ๆง
is_suitable = discriminator.judge(preprocessed, similar_cases)
# 5. ็ๆๆต่ฏ็จไพ
if is_suitable:
test_case = generator.generate(preprocessed, similar_cases)
# 6. ้ญ็ฏ่ฟญไปฃ
result = run_test(test_case)
coverage = analyze_coverage(result)
if coverage < TARGET:
# ๆช่ฆ็่ทฏๅพ โ ่กฅๅ
็จไพ โ ๆดๆฐ็ฅ่ฏๅบ
supplementary = generate_supplementary(coverage.gaps)
knowledge_base.update(discount_price, supplementary)
้ฆๆฌกๆต่ฏ๏ผ่ก่ฆ็ 88%๏ผๅๆฏ 75%
โ
ๆช่ฆ็ๅๆฏ๏ผround ่กไธบ่พน็๏ผๅฆ 9.995 โ 10.00๏ผ
โ
ๆจกๅ่กฅๅ
็จไพ๏ผ
def test_round_edge():
assert discount_price([9.995], 0.01) == [9.9]
โ
ๅๆฌก่ฟ่ก๏ผ่ก่ฆ็ 100%๏ผๅๆฏ 100%
โ
ๅฐ <discount_price, test_discount_price.py> ่ฟฝๅ ไปฃ็ ๅบ
็ๆฌๅท๏ผpy-disc-v1.1
| ๆๆ | ๆ RAG | ๅบ็ก RAG | ๆไปฌ็ๆนๆณ |
|---|---|---|---|
| ๆฃ็ดขๅ็กฎ็ | 45% | 72% | 91% |
| ็จไพ็ๆๆถ้ด | 12min | 5min | 2.3min |
| ้ฆๆฌก่ฆ็็ | 62% | 78% | 94% |
| ็ฅ่ฏๅบๅฌๅ็ | 23% | 58% | 87% |